/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package herramientas;

import agregar.*;
import eliminar.*;
import funcionalidades.participarForm;
import funcionalidades.reporteForm;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import login.LoginForm;
import login.recuperacionPasswordForm;
import modificar.*;
import org.apache.struts.action.ActionForm;
import registros.*;
import mensaje.*;

/**
 *
 * @author pimpa
 */
public class baseDatos {

    private static int nroAbonados = 0;
    private static baseDatos instancia = null;
    private static final String url_bd = "jdbc:postgresql://localhost:5432/";
    private static Connection con;
    private static Statement state;

    private baseDatos() {
        try {
            Class.forName("org.postgresql.Driver");
            con = DriverManager.getConnection(url_bd, "postgres", "postgres");
            state = con.createStatement();
        } catch (Exception e) {
        }
    }

    public synchronized static void cerrarConexion() {
        if (--nroAbonados == 0) {
            try {
                state.execute("END");
                state.close();
                con.close();
            } catch (Exception e) {
            }
            instancia = null;
        }
    }

    private synchronized static void crearInstancia() {
        if (instancia == null) {
            instancia = new baseDatos();
        }
    }

    public static baseDatos getInstance() {
        nroAbonados++;
        crearInstancia();
        return instancia;
    }

    
    public String UsuarioGetID(String id_persona) {
        try {            
            
            String consulta1 = "SELECT u.id FROM usuario u WHERE " 
                    + "u.username ='" + id_persona + "';";
            ResultSet r = state.executeQuery(consulta1);            
            r.next();
            String id = r.getString(1);           
            return id;
        } catch (Exception e) {
            return null;
        }
    }
    
    
    public ResultSet loginQuery(String email) {
        try {
            String insertar = "SELECT * FROM usuario WHERE email='" + email + "'";
            ResultSet usuario = state.executeQuery(insertar);
            usuario.next();
            String verif = usuario.getString("password");
            int type = usuario.getInt("tipo");
            int ID = usuario.getInt("id");
            return usuario;
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.println(e.getMessage());
            return null;
        }
    }

    public void areaInsert(agrAreaForm formBean) {

        String nombre = formBean.getName();
        try {
            String modU = "INSERT INTO AREA VALUES (default, '" + nombre + "');";
            state.executeUpdate(modU);
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void estadoInsert(agrEstadoForm formBean) {
        String nombre = formBean.getName();
        try {
            String modU = "INSERT INTO ESTADO VALUES ('" + nombre + "');";
            state.executeUpdate(modU);
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void municipioInsert(agrMunicipioForm formBean) {
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        try {
            String modM = "INSERT INTO MUNICIPIO VALUES ('" + municipio + "', '" + estado + "');";
            state.executeUpdate(modM);
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void parroquiaInsert(agrParroquiaForm formBean) {
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        String parroquia = formBean.getParroquia();
        try {
            String modM = "INSERT INTO PARROQUIA VALUES ('" + parroquia + "','" + municipio + "', '" + estado + "');";
            state.executeUpdate(modM);
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void areaDelete(elAreaForm formBean) {
        String name = formBean.getName();
        try {
            String modE = "DELETE FROM area WHERE nombre = '" + name + "';";
            state.executeUpdate(modE);
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public boolean estadoDelete(elEstadoForm formBean) {
        String name = formBean.getName();
        try {
            String modE = "DELETE FROM estado WHERE nombre = '" + name + "';";
            state.executeUpdate(modE);
            return true;
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            return false;
        }
    }

    public boolean municipioDelete(elMunicipioForm formBean) {
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        try {
            String modE = "DELETE FROM municipio WHERE nombre = '" + municipio + "' AND nombre_estado = '" + estado + "';";
            state.executeUpdate(modE);
            return true;
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            return false;
        }
    }

    public void universidadDelete(elUniversidadForm formBean) {
        String number = formBean.getId();
        try {
            String modU = "DELETE FROM universidad WHERE id=" + number + ";";
            state.executeUpdate(modU);
        } catch (Exception e) {
            return;
        }
    }

    public void estadoUpdate(modEstadoForm formBean) {
        String name = formBean.getName();
        String newName = formBean.getNewName();
        try {
            String modE = "UPDATE estado SET nombre = '" + newName + "' WHERE nombre = '" + name + "';";
            state.executeUpdate(modE);
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void informacionUpdate(modInformacionForm formBean) {
        String nombre_modulo = formBean.getNombre_modulo();
        String descripcion = formBean.getDescripcion();
        String objetivos = formBean.getObjetivos();
        String telefono_ofic = formBean.getTelefono_ofic();
        String telefono_contacto = formBean.getTelefono_contacto();
        String nombre_jefe = formBean.getNombre_jefe();
        try {
            String q = "UPDATE informacion SET nombre_modulo = '" + nombre_modulo + "', descripcion = '" + descripcion + "', objetivos = '" + objetivos + "', telefono_ofic = '" + telefono_ofic + "', telefono_contacto = '" + telefono_contacto + "',  nombre_jefe = '" + nombre_jefe + "' WHERE id=1;";
            state.executeUpdate(q);
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void parroquiaUpdate(modParroquiaForm formBean) {
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        String parroquia = formBean.getParroquia();
        String newMunicipio = formBean.getNewMunicipio();
        String newEstado = formBean.getNewEstado();
        String newParroquia = formBean.getNewParroquia();
        try {
            String modE = "UPDATE PARROQUIA SET nombre = '" + newParroquia + "',"
                    + " nombre_municipio = '" + newMunicipio + "', nombre_estado "
                    + "='" + newEstado + "' WHERE nombre = '" + parroquia + "' "
                    + "AND nombre_municipio = '" + municipio + "' AND "
                    + "nombre_estado = '" + estado + "';";
            state.executeUpdate(modE);
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.print(e.getMessage());
        }
    }

    public String[] usuarioQuery(ActionForm form) {
        String username = "";
        if (form instanceof LoginForm) {
            LoginForm formBean = (LoginForm) form;
            username = formBean.getUsername();
            String clave = formBean.getClave();
        } else if (form instanceof recuperacionPasswordForm) {
            recuperacionPasswordForm formBean = (recuperacionPasswordForm) form;
            username = formBean.getNombre_usuario();
        }
        try {
            String query = "SELECT * FROM usuario WHERE username = '" + username + "'";
            ResultSet result = state.executeQuery(query);
            result.next();
            String[] res = new String[6];
            res[0] = result.getString("id");
            res[1] = result.getString("username");
            res[2] = result.getString("password");
            res[3] = result.getString("tipo");
            res[4] = result.getString("email");
            res[5] = result.getString("estatus");
            return res;
        } catch (Exception e) {
            return null;
        }
    }

    public String[] usuarioQuery(String username) {
        try {
            String query = "SELECT * FROM usuario WHERE username = '" + username + "'";
            ResultSet result = state.executeQuery(query);
            result.next();
            String[] res = new String[5];
            res[0] = result.getString("id");
            res[1] = result.getString("username");
            res[2] = result.getString("password");
            res[3] = result.getString("tipo");
            res[4] = result.getString("email");
            return res;
        } catch (Exception e) {
            return null;
        }
    }

    public void usuarioUpdatePassword(String username, String clave_hash, String email) {
        try {
            String insert = "UPDATE usuario SET password='" + clave_hash + "', email='" + email + "' WHERE username='" + username + "';";
            state.executeUpdate(insert);
        } catch (Exception e) {
            System.out.print(e.getMessage());
        }
    }

    public void usuarioUpdate(String username, String email) {
        try {
            String insert = "UPDATE usuario SET email='" + email + "' WHERE username='" + username + "';";
            state.executeUpdate(insert);
        } catch (Exception e) {
            System.out.print(e.getMessage());
        }
    }

    public String[] ordinarioUpdate(String username, String parroquia, String estado, String municipio, String direccion, String email) {
        try {

            String[] id = usuarioQuery(username);
            usuarioUpdate(username, email);
            if (!direccion.equals("")) {
                direccion = "'" + direccion + "'";
            } else {
                direccion = "null";
            }
            String mod = "UPDATE ordinario SET nombre_parroquia = '" + parroquia + "', nombre_estado = '" + estado + "', nombre_municipio = '" + municipio + "', direccion = " + direccion + " WHERE id = '" + id[0] + "';";
            state.executeUpdate(mod);
            return id;
        } catch (Exception e) {
            return null;
        }
    }

    public void consultorUpdate(modificarConsultorForm formBean) {
        String username = formBean.getUserName();
        String parroquia = formBean.getParroquia();
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        String email = formBean.getEmail();
        String cedula = formBean.getCi();
        String nombre = formBean.getNombre();
        String apellido = formBean.getApellido();
        String nivel_instruccion = formBean.getNivel_instruccion();
        String experiencia = formBean.getExperiencia();
        String telefono = formBean.getTelefono();
        String direccion = formBean.getDireccion();

        String[] id = personaNaturalUpdate(username, parroquia, municipio, estado, email, cedula, nombre, apellido, nivel_instruccion, experiencia, telefono, direccion);
    }

    public String[] personaNaturalUpdate(String username, String parroquia, String municipio, String estado, String email,
            String cedula, String nombre, String apellido, String nivel_instruccion,
            String experiencia, String telefono, String direccion) {
        try {
            String[] id = ordinarioUpdate(username, parroquia, estado, municipio, direccion, email);


            String modificarPN = "UPDATE persona_natural set ci='" + cedula + "'"
                    + ", nombre='" + nombre + "', apellido='" + apellido + "',"
                    + "nivel_instruccion='"
                    + nivel_instruccion + "', experiencia='" + experiencia + "'"
                    + " WHERE id ="
                    + id[0] + " ;";
            state.executeUpdate(modificarPN);

            String mTelf = "UPDATE telefono SET telefono='" + telefono + "' "
                    + "WHERE id = '" + id[0] + "' ";
            state.executeUpdate(mTelf);

            return id;
        } catch (Exception e) {
            return null;
        }
    }

    public void estudianteUpdate(modificarEstudianteForm formBean) {
        String username = formBean.getUserName();
        String parroquia = formBean.getParroquia();
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        String email = formBean.getEmail();
        String cedula = formBean.getCi();
        String nombre = formBean.getNombre();
        String apellido = formBean.getApellido();
        String nivel_instruccion = formBean.getNivel_instruccion();
        String experiencia = formBean.getExperiencia();
        String telefono = formBean.getTelefono();
        String direccion = formBean.getDireccion();
        String nombre_carrera = formBean.getCarrera();
        String nombre_universidad = formBean.getUniversidad();
        String nucleo = formBean.getNucleo();

        try {
            String[] id = personaNaturalUpdate(username, parroquia, municipio, estado, email,
                    cedula, nombre, apellido, nivel_instruccion,
                    experiencia, telefono, direccion);

            String select = "SELECT id FROM universidad WHERE nombre = '" + nombre_universidad + "' AND nucleo='" + nucleo + "';";
            ResultSet pswd = state.executeQuery(select);
            pswd.next();
            String id_universidad = pswd.getString("id");

            String modificarEst = "UPDATE  estudiante SET id_universidad='" + id_universidad + "' WHERE id = " + id[0] + ";";
            state.executeUpdate(modificarEst);

            select = "SELECT id FROM carrera WHERE nombre = '" + nombre_carrera + "';";
            pswd = state.executeQuery(select);
            pswd.next();
            String id_carrera = pswd.getString("id");

            modificarEst = "UPDATE estudiante SET id_carrera='" + id_carrera + "' WHERE id= " + id[0] + ";";
            state.executeUpdate(modificarEst);

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void profesorUpdate(modProfesorForm formBean) {
        String username = formBean.getUserName();
        String parroquia = formBean.getParroquia();
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        String email = formBean.getEmail();
        String cedula = formBean.getCi();
        String nombre = formBean.getNombre();
        String apellido = formBean.getApellido();
        String nivel_instruccion = formBean.getNivel_instruccion();
        String experiencia = formBean.getExperiencia();
        String telefono = formBean.getTelefono();
        String direccion = formBean.getDireccion();
        String nombre_departamento = formBean.getDepartamento();
        String nombre_universidad = formBean.getUniversidad();
        String nucleo = formBean.getNucleo();
        try {

            String id[] = personaNaturalUpdate(username, parroquia, municipio,
                    estado, email, cedula, nombre, apellido,
                    nivel_instruccion, experiencia,
                    telefono, direccion);

            String select = "SELECT id FROM universidad WHERE nombre = '"
                    + nombre_universidad + "' AND nucleo = '" + nucleo + "' ";
            ResultSet pswd = state.executeQuery(select);
            pswd.next();
            String id_universidad = pswd.getString("id");

            String ads = "UPDATE esta_adscrito SET id_universidad = '"
                    + id_universidad + "' WHERE id_profesor = '" + id[0] + "';";
            state.executeUpdate(ads);

            String modificarProf = "UPDATE  profesor SET nombre_departamento = "
                    + "'" + nombre_departamento + "' WHERE id = " + id[0] + ";";
            state.executeUpdate(modificarProf);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void otroUpdate(modOtroForm formBean) {
        String username = formBean.getUserName();
        String parroquia = formBean.getParroquia();
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        String email = formBean.getEmail();
        String cedula = formBean.getCi();
        String nombre = formBean.getNombre();
        String apellido = formBean.getApellido();
        String nivel_instruccion = formBean.getNivel_instruccion();
        String experiencia = formBean.getExperiencia();
        String telefono = formBean.getTelefono();
        String direccion = formBean.getDireccion();
        String profesion = formBean.getProfesion();
        String lugar_trabajo = formBean.getLugar_trabajo();
        try {
            String[] id = personaNaturalUpdate(username, parroquia, municipio,
                    estado, email, cedula, nombre, apellido,
                    nivel_instruccion, experiencia,
                    telefono, direccion);

            String modificarOtro = "UPDATE otro SET profesion='" + profesion + "', lugar_trabajo = '" + lugar_trabajo + "' WHERE id = " + id[0] + ";";
            state.executeUpdate(modificarOtro);
        } catch (Exception e) {
        }
    }

    public String organizacionInsert(String username, String password, String email,
            int tipo, String parroquia, String estado, String municipio, String detalles,
            String status) {
        try {
            String id = ordinarioInsert(username, email, password, parroquia,
                    municipio, estado, detalles, tipo, status);
            String ins = "INSERT INTO ORGANIZACION VALUES ('" + id + "')";
            state.executeUpdate(ins);
            return id;
        } catch (Exception e) {
            return null;
        }
    }

    public String organizacionUpdate(String username, String parroquia, String estado, String municipio, String direccion, String email) {
        try {
            String[] idUser = ordinarioUpdate(username, parroquia, estado, municipio, direccion, email);
            return idUser[0];

        } catch (Exception e) {
            return null;
        }
    }

    public void comunidadUpdate(modComunidadForm formBean) {
        String username = formBean.getUserName();
        String email = formBean.getEmail();
        String nombre = formBean.getNombre();
        String numero_familias = formBean.getNumero_familias();
        String nivel_estudio = formBean.getNivel_estudio();
        String nro_cuaderno_comprobante = formBean.getNro_cuaderno_comprobante();
        String folio = formBean.getFolio();
        String tomo = formBean.getTomo();
        String protocolo = formBean.getProtocolo();
        String nro_planilla = formBean.getNro_planilla();
        String fecha_registro = formBean.getFecha_registro();
        String parroquia = formBean.getParroquia();
        String estado = formBean.getEstado();
        String municipio = formBean.getMunicipio();
        String direccion = formBean.getDireccion();
        String rif_contacto = formBean.getRif_contacto();
        String nombre_contacto = formBean.getNombre_contacto();
        String apellido_contacto = formBean.getApellido_contacto();
        String telefono_contacto = formBean.getTelefono_contacto();
        String cargo_contacto = formBean.getCargo_contacto();
        String cedula_contacto = formBean.getCi_contacto();
        try {
            String id = organizacionUpdate(username, parroquia, estado, municipio, direccion, email);

            String update = "UPDATE comunidad SET nombre = '" + nombre + "',"
                    + "numero_familias='" + numero_familias + "', "
                    + "nivel_estudio = '" + nivel_estudio + "', nro_cuaderno_comprobante = '" + nro_cuaderno_comprobante + "',"
                    + "folio = '" + folio + "', tomo = '" + tomo + "', protocolo = '" + protocolo + "', nro_planilla='" + nro_planilla + "',"
                    + "fecha_registro = '" + fecha_registro + "' WHERE id = " + id + ";";
            state.executeUpdate(update);

            if (!rif_contacto.equals("")) {
                rif_contacto = "'" + rif_contacto + "'";
            } else {
                rif_contacto = "null";
            }

            String update_miembro = "UPDATE miembro SET rif=" + rif_contacto + ", ci='" + cedula_contacto + "', ";
            update_miembro += "nombre='" + nombre_contacto + "', apellido='" + apellido_contacto + "', cargo='" + cargo_contacto + "', ";
            update_miembro += "telefono='" + telefono_contacto + "' WHERE id_organizacion =" + id + " ;";
            state.executeUpdate(update_miembro);
        } catch (Exception e) {
        }

    }

    public void comunidadInsert(regComunidadForm formBean, int tipo, String status) {
        String nombre = formBean.getNombre();
        String email = formBean.getEmail();
        String password = formBean.getPassword();
        String passwordCheck = formBean.getPasswordCheck();
        int cuaderno = formBean.getCuaderno();
        String folio = formBean.getFolio();
        int tomo = formBean.getTomo();
        int protocolo = formBean.getProtocolo();
        int numPlanilla = formBean.getNumPlanilla();
        String condSocial = formBean.getCondSocial();
        String religion = formBean.getReligion();
        int familias = formBean.getFamilias();
        String estudio = formBean.getEstudio();
        String estado = formBean.getEstado();
        String municipio = formBean.getMunicipio();
        String parroquia = formBean.getParroquia();
        String detalles = formBean.getDetalles();
        String nomContacto = formBean.getNomContacto();
        String telfContacto = formBean.getTelfContacto();
        String cargoContacto = formBean.getCargoContacto();
        String apellidoContacto = formBean.getApellidoContacto();
        String ciContacto = formBean.getCiContacto();
        String username = formBean.getUsername();
        String rifContacto = formBean.getRifContacto();
        String fecha = formBean.getFecha_reg();

        if (!(rifContacto.equals(""))) {
            rifContacto = "'" + rifContacto + "'";
        } else {
            rifContacto = "null";
        }


        try {
            String id = organizacionInsert(username, password, email, tipo,
                    parroquia, estado, municipio, detalles, status);

            String insertarM = "INSERT INTO miembro VALUES ('" + id + "',"
                    + rifContacto + ",'" + ciContacto + "','" + nomContacto
                    + "','" + apellidoContacto + "','" + cargoContacto + "','"
                    + telfContacto + "')";
            state.executeUpdate(insertarM);

            String insertarC = "INSERT INTO comunidad VALUES "
                    + "('" + id + "','" + nombre + "','No Asignado','No Asignado','"
                    + familias + "'," + "'" + estudio + "','" + cuaderno + "','"
                    + folio + "','" + tomo + "','" + protocolo + "','"
                    + numPlanilla + "', '" + fecha + "');";
            state.executeUpdate(insertarC);
        } catch (Exception e) {
        }
    }

    public void empresaInsert(regJuridicoForm formBean, int tipo, String status) {
        String nombre = formBean.getNombre();
        String rif = formBean.getRif();
        String nomContacto = formBean.getNomContacto();
        String apellidoContacto = formBean.getApellidoContacto();
        String telfContacto = formBean.getTelContacto();
        String cargoContacto = formBean.getCargoContacto();
        String ciContacto = formBean.getCiContacto();
        String direccion = formBean.getDetalles();
        String detalles = formBean.getDSede();
        String parroquia = formBean.getParroquia();
        String estado = formBean.getEstado();
        String municipio = formBean.getMunicipio();
        String email = formBean.getEmail();
        String error = formBean.getError();
        String password = formBean.getPassword();
        String telefono = formBean.getTelefono();
        String username = formBean.getUsername();
        String rifContacto = formBean.getRifContacto();

        if (!(rifContacto.equals(""))) {
            rifContacto = "'" + rifContacto + "'";
        } else {
            rifContacto = "null";
        }

        if ((detalles != null) && !(detalles.equals(""))) {
            detalles = "'" + detalles + "'";
        } else {
            detalles = "null";
        }

        try {


            String id = organizacionInsert(username, password, email, tipo,
                    parroquia, estado, municipio, direccion, status);

            String insertarM = "INSERT INTO miembro VALUES ('" + id + "',"
                    + rifContacto + ",'" + ciContacto + "','" + nomContacto
                    + "','" + apellidoContacto + "','" + cargoContacto + "','"
                    + telfContacto + "')";
            state.executeUpdate(insertarM);

            String insertarE = "INSERT INTO empresa VALUES ('" + id + "','" + rif
                    + "','" + nombre + "'," + detalles + ")";
            state.executeUpdate(insertarE);
        } catch (Exception e) {
        }
    }

    public void empresaUpdate(modificarEmpresaForm formBean) {
        String nombre = formBean.getNombre();
        String rif = formBean.getRif();
        String nombre_contacto = formBean.getNombre_contacto();
        String apellido_contacto = formBean.getApellido_contacto();
        String telefono_contacto = formBean.getTelefono_contacto();
        String cargo_contacto = formBean.getCargo_contacto();
        String cedula_contacto = formBean.getCedula_contacto();
        String direccion = formBean.getDireccion();
        String detalles = formBean.getDetalles();
        String parroquia = formBean.getParroquia();
        String estado = formBean.getEstado();
        String municipio = formBean.getMunicipio();
        String email = formBean.getEmail();
        String username = formBean.getUsername();
        String rif_contacto = formBean.getRif_contacto();

        if (!(detalles == null)) {
            detalles = "'" + detalles + "'";
        } else {
            detalles = "null";
        }

        try {
            String id = organizacionUpdate(username, parroquia, estado, municipio, direccion, email);

            String update_empresa = "UPDATE empresa SET nombre ='" + nombre + "', detalles=" + detalles + " WHERE id =" + id + " ;";
            state.executeUpdate(update_empresa);

            if (!rif_contacto.equals("")) {
                rif_contacto = "'" + rif_contacto + "'";
            } else {
                rif_contacto = "null";
            }

            String update_miembro = "UPDATE miembro SET rif=" + rif_contacto + ", ci='" + cedula_contacto + "', ";
            update_miembro += "nombre='" + nombre_contacto + "', apellido='" + apellido_contacto + "', cargo='" + cargo_contacto + "', ";
            update_miembro += "telefono='" + telefono_contacto + "' WHERE id_organizacion =" + id + " ;";
            state.executeUpdate(update_miembro);

        } catch (Exception e) {
        }
    }

    public void universidadInsert(agrUniversidadForm formBean) {
        String name = formBean.getName();
        String nucleo = formBean.getNucleo();
        try {
            String insertarU = "INSERT INTO universidad VALUES (default,'" + name + "', '" + nucleo + "');";
            state.executeUpdate(insertarU);
        } catch (Exception e) {
        }
    }

    public boolean parroquiaDelete(elParroquiaForm formBean) {
        String parroquia = formBean.getParroquia();
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        try {
            String modE = "DELETE FROM PARROQUIA WHERE nombre = '" + parroquia + "' AND nombre_municipio = '" + municipio + "' AND nombre_estado = '" + estado + "';";
            state.executeUpdate(modE);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public void areaUpdate(modAreaForm formBean) {
        String nombre = formBean.getName();
        String nuevo_nombre = formBean.getNewArea();
        try {
            String modE = "UPDATE area SET nombre = '" + nuevo_nombre + "' WHERE nombre = '" + nombre + "';";
            state.executeUpdate(modE);
        } catch (Exception e) {
        }
    }

    public void municipioUpdate(modMunicipioForm formBean) {
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        String nuevo_municipio = formBean.getMunicipioNuevo();
        String nuevo_estado = formBean.getEstadoNuevo();
        try {
            String modE = "UPDATE municipio SET nombre = '" + nuevo_municipio
                    + "', nombre_estado ='" + nuevo_estado + "' WHERE nombre = '"
                    + municipio + "' AND nombre_estado = '" + estado + "';";
            state.executeUpdate(modE);
        } catch (Exception e) {
        }
    }

    public void universidadUpdate(modUniversidadForm formBean) {
        String id = formBean.getId();
        String nombre = formBean.getName();
        String nucleo = formBean.getNucleo();
        try {
            String modU = "UPDATE universidad SET nombre = '" + nombre + "', "
                    + "nucleo='" + nucleo + "' WHERE id = " + id.toString() + ";";
            state.executeUpdate(modU);
        } catch (Exception e) {
        }
    }

    public void proyectoInsert(proponerProyectoForm formBean, String user_id) {
        String nombre = formBean.getNombre();
        String fecha_inicio = formBean.getFecha_inicio();
        String objetivos = formBean.getObjetivos();
        String justificacion = formBean.getJustificacion();
        String es_servicio_comunitario = formBean.getEs_servicio_comunitario();
        String nombre_area = formBean.getNombre_area();
        int nro_hombres = formBean.getNro_hombres();
        int nro_mujeres = formBean.getNro_mujeres();
        int nro_3era_edad = formBean.getNro_3era_edad();
        int nro_ninos = formBean.getNro_ninos();
        int nro_discapacitados = formBean.getNro_discapacitados();
        int total_presupuesto = formBean.getTotal_presupuesto();
        String nombre_parroquia = formBean.getParroquia();
        String nombre_municipio = formBean.getMunicipio();
        String nombre_estado = formBean.getEstado();
        String status = formBean.getStatus();
	String etapas[] = formBean.getnE();
	String nfechini[] = formBean.getnFI();
	String nfechfin[] = formBean.getnFF();

	try {
            String esc = "NULL";
            if (es_servicio_comunitario != null) {
                if (es_servicio_comunitario.equals("si")) {
                    esc = "'true'";
                } else {
                    esc = "'false'";
                }
            }
            fecha_inicio = (fecha_inicio.equals("")) ? "NULL" : "'" + fecha_inicio + "'";
            nombre_parroquia = (nombre_parroquia.equals("")) ? "NULL" : "'" + nombre_parroquia + "'";
            nombre_estado = (nombre_estado.equals("")) ? "NULL" : "'" + nombre_estado + "'";
            nombre_municipio = (nombre_municipio.equals("")) ? "NULL" : "'" + nombre_municipio + "'";
            String id_area = "NULL";
            if (nombre_area != "") {
                String buscarID = "SELECT id FROM area WHERE nombre = '" + nombre_area + "';";
                ResultSet obtener_id = state.executeQuery(buscarID);
                obtener_id.next();
                id_area = obtener_id.getString("id");
                id_area = "'" + id_area + "'";
            }


            String insertarN = "INSERT INTO proyecto VALUES (default,'" + nombre + "',"
                    + "" + fecha_inicio + ",'" + objetivos + "','" + justificacion + "'," + esc + ","
                    + "'false','" + status + "',NULL," + id_area + ",'" + nro_hombres + "',"
                    + "'" + nro_mujeres + "','" + nro_3era_edad + "','" + nro_ninos + "',"
                    + "'" + nro_discapacitados + "','" + user_id + "','" + total_presupuesto + "'," + nombre_parroquia + ","
                    + "" + nombre_estado + "," + nombre_municipio + ");";
            state.executeUpdate(insertarN);

            String SelectIDQuery = "SELECT id FROM proyecto WHERE nombre='" + nombre + "' AND id_proponente='" + user_id + "' ORDER BY id DESC;";

            ResultSet SelectID = state.executeQuery(SelectIDQuery);
            SelectID.next();

            String id_proy = SelectID.getString("id");
            String insertPE = "INSERT INTO proyectos_especiales VALUES (default,'" + id_proy + "');";

            state.executeUpdate(insertPE);
	    
	    // Agregamos las etapas
	    
	    // Obtenemos el id del proyecto especial
	    String getIdesp = "SELECT id FROM proyectos_especiales WHERE id_proyecto='"+id_proy+"';";
	     ResultSet SelectPEID = state.executeQuery(getIdesp);
            SelectPEID.next();

            String pEid = SelectPEID.getString("id");
	    String insertEtapa = "";
	    int tamEtapas = etapas.length;
	    for (int i = 0; i < tamEtapas; i++){
		    insertEtapa = "INSERT into etapa VALUES (default, '"+etapas[i]+"', '"+nfechini[i]+"', "
			    + "'"+nfechfin[i]+"','"+id_proy+"','"+pEid+"')";
		    state.executeUpdate(insertEtapa);
	    }

        } catch (Exception e) {
        }
    }

    public String usuarioInsert(String username, String email, String password, int tipo, String status) {
        try {
            String insertarU = "INSERT INTO usuario VALUES"
                    + " (default,'" + username + "','" + email + "','" + password + "','" + tipo + "','" + status + "');";
            state.executeUpdate(insertarU);
            String obtener_id = "SELECT id FROM usuario WHERE username='" + username + "';";
            ResultSet resultado = state.executeQuery(obtener_id);
            resultado.next();
            String id = resultado.getString("id");
            return id;
        } catch (Exception e) {
            return null;
        }
    }

    public String ordinarioInsert(String username, String email, String password,
            String parroquia, String municipio, String estado, String direccion,
            int tipo, String status) {
        try {
            if (direccion != null) {
                direccion = "'" + direccion + "'";
            } else {
                direccion = "null";
            }
            String id = usuarioInsert(username, email, password, tipo, status);
            String insertarOrd = "INSERT INTO ordinario VALUES ('" + id + "','" + parroquia + "','" + estado + "','" + municipio + "'," + direccion + ")";
            state.executeUpdate(insertarOrd);
            return id;
        } catch (Exception e) {
            return null;
        }
    }

    public String personaNaturalInsert(String username, String email,
            String cedula, String nombre, String apellido, String fecha_nac,
            String experiencia, char sexo, String parroquia,
            String estado, String municipio, String direccion, String password,
            String telefono, String nivel_instruccion, String estrato_social, int tipo, String status) {

        try {
            String CalcEdad = "SELECT EXTRACT(year FROM AGE(NOW(),'" + fecha_nac + "')) as age;";
            ResultSet Sedad = state.executeQuery(CalcEdad);
            Sedad.next();
            String edad = Sedad.getString("age");

            String id = ordinarioInsert(username, email, password, parroquia, municipio, estado, direccion, tipo, status);
            String insertarPN = "INSERT INTO persona_natural values ('" + id + "','" + cedula + "','" + nombre + "','" + apellido + "','" + fecha_nac + "','" + sexo + "','No Asignado','" + edad + "','" + nivel_instruccion + "','" + experiencia + "','No Asignado');";
            state.executeUpdate(insertarPN);

            String insertarTelf = "INSERT INTO telefono values('" + id + "','" + telefono + "');";
            state.executeUpdate(insertarTelf);
            return id;
        } catch (Exception e) {
            return null;
        }
    }

    public void consultorInsert(regConsultorForm formBean, int tipo, String status) {
        String username = formBean.getUserName();
        String email = formBean.getEmail();
        String cedula = formBean.getCi();
        String nombre = formBean.getNombre();
        String apellido = formBean.getApellido();
        String fecha_nac = formBean.getFecha_nac();
        char sexo = formBean.getSexo();
        String parroquia = formBean.getParroquia();
        String estado = formBean.getEstado();
        String municipio = formBean.getMunicipio();
        String password = formBean.getPassword();
        String nivel_instruccion = formBean.getNivel_instruccion();
        String experiencia = formBean.getExperiencia();
        String estrato_social = formBean.getEstrato_social();
        String telefono = formBean.getTelefono();
        String direccion = formBean.getDireccion();
        try {
            String id = personaNaturalInsert(username, email, cedula, nombre,
                    apellido, fecha_nac, experiencia, sexo, parroquia, estado,
                    municipio, direccion, password, telefono, nivel_instruccion,
                    estrato_social, tipo, status);
            String insertarC = "INSERT INTO consultor values ('" + id + "');";
            state.executeUpdate(insertarC);
        } catch (Exception e) {
        }
    }

    public void estudianteInsert(regEstudianteForm formBean, int tipo, String status) {
        String email = formBean.getEmail();
        String cedula = formBean.getCi();
        String nombre = formBean.getNombres();
        String apellido = formBean.getApellidos();
        String fecha_nac = formBean.getFecha_nac();
        String direccion = formBean.getDetalles();
        char sexo = formBean.getSexo();
        String parroquia = formBean.getParroquia();
        String estado = formBean.getEstado();
        String municipio = formBean.getMunicipio();
        String password = formBean.getPassword();
        String carnet = formBean.getCarnet();
        String fecha_ingreso = formBean.getFecha_ing();
        String nombre_universidad = formBean.getUniversidad();
        String telefono = formBean.getTelefono();
        String nucleo = formBean.getNucleo();
        String nombre_carrera = formBean.getCarrera();
        String nivel_instruccion = formBean.getEstudio();
        String experiencia = formBean.getExperiencia();
        String estrato_social = formBean.getCondSocial();
        String username = formBean.getUsername();
        String proyecto = formBean.getProyecto();

        if (!(carnet.equals(""))) {
            carnet = "'" + carnet + "'";
        } else {
            carnet = "null";
        }

        try {

            String id = personaNaturalInsert(username, email, cedula, nombre, apellido, fecha_nac, experiencia, sexo, parroquia, estado,
                    municipio, direccion, password, telefono, nivel_instruccion,
                    estrato_social, 2, status);
            String obtener_id_uni = "SELECT id FROM universidad WHERE nombre ='"
                    + nombre_universidad + "' AND nucleo ='" + nucleo + "'  ;";
            ResultSet resultado = state.executeQuery(obtener_id_uni);
            resultado.next();

            String id_universidad = resultado.getString("id");
            String obtener_id_carrera = "SELECT id FROM carrera WHERE nombre='"
                    + nombre_carrera + "';";
            ResultSet resCarrera =
                    state.executeQuery(obtener_id_carrera);
            resCarrera.next();
            String id_carrera = resCarrera.getString("id");

            String insertarEst = "INSERT INTO estudiante VALUES ('" + id
                    + "'," + carnet + ",'" + fecha_ingreso + "','" + id_universidad
                    + "','" + id_carrera + "',NULL,NULL)";

            state.executeUpdate(insertarEst);

        } catch (Exception e) {
        }
    }

    public void profesorInsert(regProfesorForm formBean, int tipo, String status) {
        String email = formBean.getEmail();
        String cedula = formBean.getCi();
        String nombre = formBean.getNombres();
        String apellido = formBean.getApellidos();
        String fecha_nac = formBean.getFecha_nac();
        String direccion = formBean.getDetalles();
        char sexo = formBean.getSexo();
        String parroquia = formBean.getParroquia();
        String estado = formBean.getEstado();
        String municipio = formBean.getMunicipio();
        String password = formBean.getPassword();
        String carnet = formBean.getCarnet();
        String fecha_ing = formBean.getFecha_ing();
        String nombre_universidad = formBean.getUniversidad();
        String nucleo = formBean.getNucleo();
        String nivel_instruccion = formBean.getEstudio();
        String experiencia = formBean.getExperiencia();
        String estrato_social = formBean.getCondSocial();
        String nombre_departamento = formBean.getDpto();
        String telefono = formBean.getTelefono();
        String username = formBean.getUsername();
        try {

            String id = personaNaturalInsert(username, email,
                    cedula, nombre, apellido, fecha_nac,
                    experiencia, sexo, parroquia,
                    estado, municipio, direccion, password,
                    telefono, nivel_instruccion, "No Asignado", 3, status);

            String obtener_id_uni = "SELECT id FROM universidad WHERE nombre='"
                    + nombre_universidad + "' AND nucleo='" + nucleo + "';";
            ResultSet resultado = state.executeQuery(obtener_id_uni);
            resultado.next();
            String id_universidad = resultado.getString("id");

            String insertP = "INSERT INTO profesor VALUES ('" + id + "','"
                    + carnet + "','" + nombre_departamento + "')";
            state.executeUpdate(insertP);

            String insertarAds = "INSERT INTO esta_adscrito VALUES ('" + id
                    + "','" + id_universidad + "')";
            state.executeUpdate(insertarAds);
        } catch (Exception e) {
        }
    }

    public void otroInsert(regOtroForm formBean, int tipo, String status) {
        String username = formBean.getUserName();
        String email = formBean.getEmail();
        String password = formBean.getPassword();
        String parroquia = formBean.getParroquia();
        String municipio = formBean.getMunicipio();
        String estado = formBean.getEstado();
        String direccion = formBean.getDireccion();
        String cedula = formBean.getCi();
        String nombre = formBean.getNombre();
        String apellido = formBean.getApellido();
        String fecha_nac = formBean.getFecha_nac();
        char sexo = formBean.getSexo();
        String nivel_instruccion = formBean.getNivel_instruccion();
        String experiencia = formBean.getExperiencia();
        String estrato_social = formBean.getEstrato_social();
        String profesion = formBean.getProfesion();
        String lugar_trabajo = formBean.getLugar_trabajo();
        String telefono = formBean.getTelefono();
        try {
            String id = personaNaturalInsert(username, email,
                    cedula, nombre, apellido, fecha_nac,
                    experiencia, sexo, parroquia,
                    estado, municipio, direccion, password,
                    telefono, nivel_instruccion, estrato_social, tipo, status);

            String insertOtro = "INSERT INTO otro VALUES ('" + id + "','"
                    + profesion + "','" + lugar_trabajo + "')";
            state.executeUpdate(insertOtro);
        } catch (Exception e) {
        }
    }

    public String obtenerAreas() {
        try {
            String consulta = "SELECT nombre FROM area;";
            ResultSet respuesta = state.executeQuery(consulta);
            String total = "";
            while (!(respuesta.isLast())) {
                respuesta.next();
                String actual = respuesta.getString("nombre");
                total += "<option value=\"" + actual + "\">" + actual + "</option>" + "\n";
            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    public String obtenerCarreras() {
        try {
            String consulta = "SELECT * FROM carrera;";
            ResultSet respuesta = state.executeQuery(consulta);
            String total = "";
            while (!(respuesta.isLast())) {
                respuesta.next();
                String actual = respuesta.getString("nombre");
                total += "<option value=\"" + actual + "\">" + actual + "</option>" + "\n";
            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    public String[] obtenerInfoUsuario(String username) {

        try {
            String[] datos = new String[2];

            String consulta = "SELECT * FROM usuario WHERE username='" + username + "';";
            ResultSet respuesta = state.executeQuery(consulta);
            respuesta.next();
            datos[0] = respuesta.getString("email") + ",";
            datos[1] = respuesta.getString("id");
            return datos;

        } catch (Exception e) {
            return null;
        }

    }

    public String[] obtenerInfoOrdinario(String username) {

        try {
            String datos[] = new String[2];
            datos = obtenerInfoUsuario(username);

            String consulta = "SELECT * FROM ordinario WHERE id='" + datos[1] + "';";
            ResultSet respuesta = state.executeQuery(consulta);
            respuesta.next();

            datos[0] += respuesta.getString("direccion") + ",";
            return datos;

        } catch (Exception e) {
            return null;
        }

    }

    public String[] obtenerInfoPersonaNatural(String username) {
        try {

            String[] datos = new String[2];

            datos = obtenerInfoOrdinario(username);

            String consulta = "SELECT * FROM persona_natural WHERE id =" + datos[1] + ";";
            ResultSet respuesta = state.executeQuery(consulta);
            respuesta.next();
            datos[0] += respuesta.getString("ci") + "," + respuesta.getString("nombre") + ",";
            datos[0] += respuesta.getString("apellido") + ",";
            datos[0] += respuesta.getString("religion") + ",";
            datos[0] += respuesta.getString("nivel_instruccion") + "," + respuesta.getString("experiencia") + ",";
            datos[0] += respuesta.getString("estrato_social") + ",";
            consulta = "SELECT telefono FROM telefono WHERE id ='" + datos[1] + "' ;";
            respuesta = state.executeQuery(consulta);
            respuesta.next();
            datos[0] += respuesta.getString("telefono") + ",";
            return datos;

        } catch (Exception e) {
            return null;
        }
    }

    public String obtenerInfoConsultor(String username) {
        String[] datos = obtenerInfoPersonaNatural(username);
        return datos[0];
    }

    public String obtenerInfoProfesor(String username) {
        try {
            String[] datos = obtenerInfoPersonaNatural(username);
            String consulta = "SELECT * FROM PROFESOR WHERE id = " + datos[1] + ";";
            ResultSet prof = state.executeQuery(consulta);
            prof.next();
            datos[0] += prof.getString("nombre_departamento");
            return datos[0];

        } catch (Exception e) {
            return null;
        }
    }

    public String obtenerInfoEstudiante(String username) {
        try {
            String[] datos = obtenerInfoPersonaNatural(username);
            String consulta = "SELECT * FROM estudiante WHERE id ='" + datos[1] + "' ;";
            ResultSet resultado = state.executeQuery(consulta);
            resultado.next();
            datos[0] += resultado.getString("id_carrera");
            return datos[0];
        } catch (Exception e) {
            return null;
        }
    }

    public String obtenerInfoOtro(String username) {

        try {
            String[] datos = obtenerInfoPersonaNatural(username);
            String consulta = "SELECT * FROM otro WHERE id = '" + datos[1] + "' ;";
            ResultSet result = state.executeQuery(consulta);
            result.next();
            datos[0] += result.getString("profesion") + "," + result.getString("lugar_trabajo");
            return datos[0];
        } catch (Exception e) {
            return null;
        }
    }

    public String obtenerInfoEmpresa(String username) {
        try {
            String[] datos = obtenerInfoOrdinario(username);
            String consulta = "SELECT * FROM empresa WHERE id = '" + datos[1] + "' ;";
            ResultSet result = state.executeQuery(consulta);
            result.next();
            datos[0] += result.getString("nombre") + "," + result.getString("rif") + "," + result.getString("detalles") + ",";

            consulta = "SELECT * FROM miembro WHERE id_organizacion='" + datos[1] + "';";
            result = state.executeQuery(consulta);
            result.next();

            datos[0] += result.getString("telefono") + "," + result.getString("apellido") + ",";
            datos[0] += result.getString("nombre") + "," + result.getString("ci") + "," + result.getString("cargo") + "," + result.getString("rif") + ",";

            return datos[0];
        } catch (Exception e) {
            return null;
        }
    }

    public String obtenerInfoComunidad(String username) {
        try {
            String[] datos = obtenerInfoOrdinario(username);
            String consulta = "SELECT c.nombre as nombre_comunidad,c.condicion_social,c.religion,c.numero_familias,c.nivel_estudio,c.nro_cuaderno_comprobante,c.folio,c.tomo,c.protocolo,c.nro_planilla,c.fecha_registro,m.rif as rif_contacto,m.ci as ci_contacto,m.nombre as nombre_contacto,m.apellido as apellido_contacto,m.cargo as cargo_contacto,m.telefono as telefono_contacto FROM comunidad c, miembro m WHERE c.id = '" + datos[1] + "' and c.id=m.id_organizacion;";
            ResultSet result = state.executeQuery(consulta);
            result.next();

            datos[0] += result.getString("nombre_comunidad") + "," + result.getString("condicion_social") + "," + result.getString("religion") + ",";
            datos[0] += result.getString("numero_familias") + "," + result.getString("nivel_estudio") + "," + result.getString("nro_cuaderno_comprobante") + ",";
            datos[0] += result.getString("folio") + "," + result.getString("tomo") + "," + result.getString("protocolo") + ",";
            datos[0] += result.getString("nro_planilla") + "," + result.getString("fecha_registro") + ",";
            datos[0] += result.getString("rif_contacto") + "," + result.getString("ci_contacto") + "," + result.getString("nombre_contacto") + ",";
            datos[0] += result.getString("apellido_contacto") + "," + result.getString("cargo_contacto") + "," + result.getString("telefono_contacto");
            return datos[0];
        } catch (Exception e) {
            return null;
        }
    }

    public String obtenerEstratoReligionCOM(String username) {
        try {
            String[] datos = obtenerInfoOrdinario(username);
            String consulta = "SELECT c.nombre as nombre_comunidad,c.condicion_social,c.religion FROM comunidad c WHERE c.id = '" + datos[1] + "';";
            ResultSet result = state.executeQuery(consulta);
            result.next();

            String resultado = result.getString("nombre_comunidad") + "," + result.getString("condicion_social") + "," + result.getString("religion");
            return resultado;
        } catch (Exception e) {
            return null;
        }
    }

    public String obtenerEstratoReligionPN(String username) {
        try {
            String[] datos = obtenerInfoOrdinario(username);
            String consulta = "SELECT nombre, apellido, ci, religion, estrato_social FROM persona_natural WHERE id = '" + datos[1] + "';";
            ResultSet result = state.executeQuery(consulta);
            result.next();

            String resultado = result.getString("nombre") + "," + result.getString("apellido") + "," + result.getString("ci") + ",";
            resultado += result.getString("estrato_social") + "," + result.getString("religion");
            return resultado;
        } catch (Exception e) {
            return null;
        }
    }


    /*
     * public String proyectosEspecialesQuery() { try { String consulta =
     * "SELECT * FROM area a, proyecto p WHERE a.id = p.id_area;"; ResultSet
     * proyectos = state.executeQuery(consulta); String total = ""; while
     * (!(proyectos.isLast())) { proyectos.next(); total += "<div
     * class=\"submit_upas\"><br><b>" + proyectos.getString(4) + "</b>" + "\n";
     * total += "<br><u>Área a la que pertenece:</u><br>" +
     * proyectos.getString(2) + "\n"; total += "<br><u>Objetivos:</u><br>" +
     * proyectos.getString("objetivos") + "\n"; total +=
     * "<br><u>Justificación:</u><br>" + proyectos.getString("justificacion") +
     * "<br>\n"; total += "</b><br>Vigente desde: " +
     * proyectos.getString("fecha_inicio") + "<br>\n"; String p =
     * proyectos.getString("es_servicio_com").equals("t") ? "Sí " : "No "; total
     * += p + "ofrece servicio comunitario </div>\n"; } return total;
     *
     * } catch (Exception e) { return ""; }
     *
     * }
     */
    //Tabla Proyectos_Especiales
    /*
     * public ResultSet ProyectosEspecialesQuery() { try { String q = "SELECT *
     * FROM proyecto p, proyectos_especiales pe, area a WHERE pe.id_proyecto =
     * p.id AND a.id = p.id_area;"; ResultSet result = state.executeQuery(q);
     * return result;
     *
     * } //mostrar errores en caso de no funcionar algo catch (Exception e) {
     *
     * System.out.println(e.getMessage()); return null; } }* ResultSet result =
     * state.executeQuery(q); return result;
     *
     * } //mostrar errores en caso de no funcionar algo catch (Exception e) {
     *
     * System.out.println(e.getMessage()); return null; } }
     */
    // Proyectos Especiales
    public String ProyectosEspQuery() {
        try {
            String consulta = "SELECT * FROM proyectos_especiales pe, area a, proyecto p WHERE pe.id_proyecto = p.id  and p.id = a.id;";
            ResultSet proyectos = state.executeQuery(consulta);
            String total = "";
            while (!(proyectos.isLast())) {
                proyectos.next();
                total += "<div class=\"submit_upas\"><br><b>" + proyectos.getString(5) + "</b>" + "\n";
                total += "<br><u>Área a la que pertenece:</u><br>" + proyectos.getString(3) + "\n";
                total += "<br><u>Objetivos:</u><br>" + proyectos.getString("objetivos") + "\n";
                total += "<br><u>Justificación:</u><br>" + proyectos.getString("justificacion") + "<br>\n";
                total += "</b><br>Vigente desde: " + proyectos.getString("fecha_inicio") + "<br>\n";
                String p = proyectos.getString("es_servicio_com").equals("t") ? "Sí " : "No ";
                total += p + "ofrece servicio comunitario </div>\n";
            }
            return total;

        } catch (Exception e) {
            return "";
        }

    }

    // Proyectos Especiales Aprobados
    public ArrayList ProyectosEspecialesAprobadosQuery() {
        try {
            String consulta = "SELECT * FROM proyectos_especiales pe, area a, proyecto p WHERE pe.id_proyecto = p.id and p.id_area = a.id and p.estatus='aprobado';";
            ResultSet proyectos = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(proyectos.isLast())) {
                proyectos.next();
                String a = proyectos.getString(1);
                String b = proyectos.getString(6);
                String c = proyectos.getString(4);
                String[] datos = {a, b, c};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }

    }

    // Proyectos Especiales En Espera
    public ArrayList ProyectosEspecialesEnEsperaQuery() {
        try {
            String consulta = "SELECT * FROM proyectos_especiales pe, area a, proyecto p WHERE pe.id_proyecto = p.id  and p.id_area = a.id and p.estatus='en espera' or p.estatus='guardado/en espera';";
            ResultSet proyectos = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(proyectos.isLast())) {
                proyectos.next();
                String a = proyectos.getString(1);
                String b = proyectos.getString(6);
                String c = proyectos.getString(4);
                String[] datos = {a, b, c};
                PA.add(datos);

            }
            return PA;

        } catch (Exception e) {
            return null;
        }

    }
// QUERYS DE LA ENTIDAD MENSAJES
    
//Funcion par obtener la lista de mensajes recibidos   
        public ArrayList MensajesRecibidosQuery(int id_destinatario, boolean nuevos) {
        try {
            String consulta = "SELECT * FROM mensaje m WHERE ";
            if (nuevos){
                consulta = consulta + "m.estado = 'nuevo' and ";
            }        
             consulta = consulta + " m.id_destinatario =" + id_destinatario + " and "
                    + " m.vedestinatario=TRUE;";
            ResultSet mensajes = state.executeQuery(consulta);            
            ArrayList PA = new ArrayList();
            if (mensajes.isBeforeFirst()){
                while (!(mensajes.isLast())) {
                    mensajes.next();
                    String a = mensajes.getString(1);
                    String b = mensajes.getString(2);
                    String c = mensajes.getString(3);
                    String d = mensajes.getString(4);
                    String e = mensajes.getString(5);
                    String f = mensajes.getString(6);
                    String[] datos = {a, b, c, d, e, f};
                    PA.add(datos);                
                }
                return PA;
            }
            else
                return null;

        } catch (Exception e) {
            ArrayList PA = new ArrayList();            
            String[] datos = {"aa",e.getMessage(),"awa","aaa","ava","asac"};
            PA.add(datos);
            return PA;
        }

    }
//Funcion para obtener la lista de mensajes enviados        
        public ArrayList MensajesEnviadosQuery(int id_remitente) {
        try {
                String consulta = "SELECT * FROM mensaje m WHERE ";
                 consulta = consulta + "m.id_remitente =" + id_remitente
                        + " and veremitente=TRUE ;";
                ResultSet mensajes = state.executeQuery(consulta);            
                ArrayList PA = new ArrayList();
                if (mensajes.isBeforeFirst()){
                    while (!(mensajes.isLast())) {
                        mensajes.next();
                        String a = mensajes.getString(1);
                        String b = mensajes.getString(2);
                        String c = mensajes.getString(3);
                        String d = mensajes.getString(4);
                        String e = mensajes.getString(5);
                        String f = mensajes.getString(6);
                        String[] datos = {a, b, c, d, e, f};
                        PA.add(datos);                
                    }
                    return PA;
               }
                else
                    return null;
           } catch (Exception e) {
            return null;
        }

    }
        
        
//Funcion para obtener los atributos de un mensaje        
        public String MensajesGetAtribute(String atr,int id_persona, String id_mensaje, String rol) {
        try {
            String param="";
            if (rol.equals("receptor"))
                param = "m.id_destinatario";
            else if (rol.equals("emisor"))
                param = "m.id_remitente";
            
            int pos=1;
            String consulta="";
            if (atr.equals("asunto")){                
                consulta = "SELECT * FROM mensaje m WHERE ";
                consulta = consulta + param +" =" + id_persona + " and m.id=" +
                id_mensaje + ";";
                pos = 1;
            }
            else if (atr.equals("contenido")){
                consulta = "SELECT * FROM mensaje m WHERE ";
                consulta = consulta + param +" =" + id_persona + " and m.id=" +
                id_mensaje + ";";
                pos = 2;
            }
            
            else if (atr.equals("remitente")){
                consulta = "SELECT * FROM mensaje m WHERE ";
                consulta = consulta + param +" =" + id_persona + " and m.id=" +
                id_mensaje + ";";
                pos = 5;
            }
            else if (atr.equals("destinatario")){
                consulta = "SELECT * FROM mensaje m WHERE ";
                consulta = consulta + param +" =" + id_persona + " and m.id=" +
                id_mensaje + ";";
                pos = 4;
            }
            
            //return consulta;
            ResultSet mensajes = state.executeQuery(consulta);            
            mensajes.next();
            String a = mensajes.getString(pos);            
            return a;

        } catch (Exception e) {
            return "a";
        }

    }
        
    public String MensajesGetNombreUsuario(String id_persona) {
        try {            
            
            String consulta1 = "SELECT u.tipo FROM usuario u WHERE " 
                    + "u.id =" + id_persona + ";";
            ResultSet r = state.executeQuery(consulta1);            
            r.next();
            String tipo_usuario = r.getString(1);
            String tabla2 ="";
            if (tipo_usuario.equals("2") || tipo_usuario.equals("3") || 
                    tipo_usuario.equals("4"))
                tabla2 = " persona_natural p";
            
            
            consulta1="SELECT p.nombre FROM" + tabla2 + " WHERE " 
                    + "p.id =" + id_persona + ";";
            String consulta2="SELECT p.apellido FROM" + tabla2 + " WHERE " 
                    + "p.id =" + id_persona + ";";
            r = state.executeQuery(consulta1);            
            r.next();
            String a = r.getString(1);            
            r = state.executeQuery(consulta2);            
            r.next();
            String b = r.getString(1);            
            return a + " " + b;
        } catch (Exception e) {
            return null;
        }
    }
    
    
        
    
        
    public void MensajesMarcarLeido(String id_mensaje) {
        try {            
            String consulta1 = "update mensaje set estado='leido' WHERE id=" 
                    + id_mensaje + ";";
            state.executeQuery(consulta1);            
        } catch (Exception e) {
        }
    }
    
    public void MensajesBorrar(String id_mensaje, String rol) {
        try {    
            String atr="";
            if (rol.equals("destinatario"))
                atr = "vedestinatario";
            else if(rol.equals("remitente"))
                atr = "veremitente";
            String consulta1 = "update mensaje set " + atr +"=FALSE WHERE id=" 
                    + id_mensaje + ";";
            ResultSet r = state.executeQuery(consulta1);            
        } catch (Exception e) {
        }
    }   

    public String MensajesEnviar(ActionForm form) {
        String asunto = "";
        String texto = "";
        String destinatario = "";
        String remitenteId = "";
        String destinatarioId = "";
        if (form instanceof ComponerMensajeForm) {
            ComponerMensajeForm formBean = (ComponerMensajeForm) form;
            asunto = formBean.getAsunto();
            texto = formBean.getTexto();
            remitenteId = formBean.getRemitenteId();           
            destinatario = formBean.getDestinatario();
        }
        try {
            destinatarioId = this.getUserId(destinatario);            
            String query = "INSERT INTO mensaje VALUES" 
                    + "(default,'" + asunto + "','" + texto + "'," 
                    + destinatarioId + "," + remitenteId + ",'" + "nuevo" 
                    + "',NULL,'" + "TRUE" + "','" +"TRUE" 
                    + "');";
            ResultSet r = state.executeQuery(query);             
            return "succ";
        } catch (Exception e) {
            return null;
        }
    }
    
    
    public String getUserId(String usuario) {
        String query = "SELECT id FROM usuario u WHERE u.username = '"+ usuario +"';";
        try {
        ResultSet r = state.executeQuery(query); 
        r.next();
        String id = r.getString(1);            
        return id;
        } catch (Exception e) {
            return null;
        }                
    }
    
    // Proyectos Especiales Rechazados
    public String ProyectosEspecialesRechazadosQuery() {
        try {
            String consulta = "SELECT * FROM proyectos_especiales pe, area a,"
                    + " proyecto p WHERE pe.id_proyecto = p.id  and p.id = a.id"
                    + " and p.estatus='rechazado';";
            ResultSet proyectos = state.executeQuery(consulta);
            String total = "";
            while (!(proyectos.isLast())) {
                proyectos.next();
                total += "<div class=\"submit_upas\"><br><b>" + proyectos.getString(5) + "</b>" + "\n";
                total += "<br><u>Área a la que pertenece:</u><br>" + proyectos.getString(3) + "\n";
                total += "<br><u>Objetivos:</u><br>" + proyectos.getString("objetivos") + "\n";
                total += "<br><u>Justificación:</u><br>" + proyectos.getString("justificacion") + "<br>\n";
                total += "</b><br>Vigente desde: " + proyectos.getString("fecha_inicio") + "<br>\n";
                String p = proyectos.getString("es_servicio_com").equals("t") ? "Sí " : "No ";
                total += p + "ofrece servicio comunitario </div>\n";
            }
            return total;

        } catch (Exception e) {
            return "";
        }

    }

    // Proyectos Especiales Enviado BPDEX
    public String ProyectosEspecialesEnviadoBPDEXQuery() {
        try {
            String consulta = "SELECT * FROM proyectos_especiales pe, area a, proyecto p WHERE pe.id_proyecto = p.id  and p.id = a.id and p.estatus='enviado bpdex';";
            ResultSet proyectos = state.executeQuery(consulta);
            String total = "";
            while (!(proyectos.isLast())) {
                proyectos.next();
                total += "<div class=\"submit_upas\"><br><b>" + proyectos.getString(5) + "</b>" + "\n";
                total += "<br><u>Área a la que pertenece:</u><br>" + proyectos.getString(3) + "\n";
                total += "<br><u>Objetivos:</u><br>" + proyectos.getString("objetivos") + "\n";
                total += "<br><u>Justificación:</u><br>" + proyectos.getString("justificacion") + "<br>\n";
                total += "</b><br>Vigente desde: " + proyectos.getString("fecha_inicio") + "<br>\n";
                String p = proyectos.getString("es_servicio_com").equals("t") ? "Sí " : "No ";
                total += p + "ofrece servicio comunitario </div>\n";
            }
            return total;

        } catch (Exception e) {
            return "";
        }

    }

    //Proyectos con solicitudes de participacion
    public ArrayList ProyectosConSolicitudesQuery() {
        try {
            String consulta = "SELECT distinct pr.id, pr.nombre, ar.nombre as nombre_area FROM "
                    + "participa pa, proyecto pr, area ar WHERE pa.id_proyecto = pr.id and ar.id=pr.id_area and pa.estatus='pendiente';";
            ResultSet proyectos = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(proyectos.isLast())) {
                proyectos.next();
                String a = proyectos.getString("id");
                String b = proyectos.getString("nombre");
                String c = proyectos.getString("nombre_area");
                String[] datos = {a, b, c};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }

    }

    //Solicitudes de Participacion Personas Naturales
    public ArrayList solicitudesPersonaNaturalParticipacionProyecto(String id) {
        try {
            String consulta = "SELECT pn.nombre as nombre, pn.apellido as apellido, u.username as username, u.id as id, u.tipo as tipo FROM usuario u natural join persona_natural pn, participa pa, proyecto p WHERE id_participante=u.id and p.id=" + id + " and id_proyecto=p.id and pa.estatus='pendiente';";
            ResultSet proyectos = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(proyectos.isLast())) {
                proyectos.next();
                String a = proyectos.getString("id");
                String b = proyectos.getString("tipo");
                String c = proyectos.getString("username");
                String d = proyectos.getString("nombre");
                String e = proyectos.getString("apellido");
                String[] datos = {a, b, c, d, e};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }

    }

    //Tabla Area
    public ResultSet AreaQuery() {
        try {
            String q = "SELECT * FROM area;";
            ResultSet result = state.executeQuery(q);
            return result;

        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {

            System.out.println(e.getMessage());
            return null;
        }
    }

    //Tabla Informacion
    public ResultSet informacionQuery() {
        try {
            String q = "SELECT * FROM informacion";
            ResultSet result = state.executeQuery(q);
            return result;

        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {

            System.out.println(e.getMessage());
            return null;
        }
    }

    public ArrayList estado() {

        try {
            String query = "SELECT nombre FROM estado ORDER BY nombre";
            ResultSet est = state.executeQuery(query);
            ArrayList estados = new ArrayList();
            while (est.next()) {
                estados.add(est.getString("nombre"));
            }
            return estados;

        } catch (Exception e) {

            System.out.println(e.getMessage());
            return null;

        }


    }

    public ArrayList municipio(String estado) {
        try {
            String query = "SELECT nombre FROM municipio WHERE nombre_estado = '" + estado + "' ORDER BY nombre";
            ResultSet est = state.executeQuery(query);
            ArrayList municipios = new ArrayList();
            while (est.next()) {
                municipios.add(est.getString("nombre"));
            }
            return municipios;
        } catch (Exception e) {

            System.out.println(e.getMessage());
            return null;

        }
    }

    public ArrayList parroquia(String estado, String municipio) {

        try {
            String query = "SELECT nombre FROM parroquia WHERE nombre_estado = '" + estado + "' AND nombre_municipio='" + municipio + "' ORDER BY nombre";
            ResultSet est = state.executeQuery(query);
            ArrayList parroquias = new ArrayList();
            while (est.next()) {
                parroquias.add(est.getString("nombre"));
            }
            return parroquias;
        } catch (Exception e) {

            System.out.println(e.getMessage());
            return null;

        }
    }

    public ArrayList[] municipio2() {
        try {
            String query = "SELECT nombre FROM estado";
            ResultSet est = state.executeQuery(query);
            ArrayList estados = new ArrayList();
            while (est.next()) {
                estados.add(est.getString("nombre"));
            }
            int i = estados.size();
            ArrayList<String>[] municipios = (ArrayList<String>[]) new ArrayList[i];

            String a = "";

            for (int j = 0; j < i; j++) {
                municipios[j] = new ArrayList<String>();
                String cond = (String) estados.get(j);
                query = "SELECT nombre FROM municipio WHERE nombre_estado='" + cond + "'";
                est = state.executeQuery(query);
                while (est.next()) {
                    a = est.getString("nombre");
                    municipios[j].add(a);

                }


            }

            return municipios;

        } catch (Exception e) {

            System.out.println(e.getMessage());
            return null;

        }


    }

    public ArrayList universidad() {
        try {
            String query = "SELECT DISTINCT nombre FROM universidad ORDER BY nombre";
            ResultSet est = state.executeQuery(query);
            ArrayList estados = new ArrayList();
            while (est.next()) {
                estados.add(est.getString("nombre"));
            }
            return estados;

        } catch (Exception e) {

            System.out.println(e.getMessage());
            return null;

        }


    }

    public ArrayList nucleo(String nuc) {
        try {
            String query = "SELECT nucleo FROM universidad WHERE nombre='" + nuc + "' ORDER BY nucleo";
            ResultSet n = state.executeQuery(query);
            ArrayList nucleos = new ArrayList();
            while (n.next()) {
                nucleos.add(n.getString("nucleo"));
            }
            return nucleos;

        } catch (Exception e) {

            System.out.println(e.getMessage());
            return null;

        }


    }

    public ArrayList getEstado() {
        ArrayList estados = new ArrayList();

        try {

            String e = "SELECT * FROM ESTADO;";
            ResultSet estado = state.executeQuery(e);

            while (estado.next()) {
                estados.add(estado.getString("nombre"));
            }


            return estados;
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {

            System.out.println(e.getMessage());
            return null;
        }

    }

    public ArrayList[] getUniversidad() {
        ArrayList[] universidades = new ArrayList[2];
        universidades[0] = new ArrayList();
        universidades[1] = new ArrayList();
        try {
            String u = "SELECT * FROM UNIVERSIDAD;";
            ResultSet universidad = state.executeQuery(u);
            while (universidad.next()) {
                universidades[0].add(universidad.getString("nombre") + " (" + universidad.getString("nucleo") + ")");
                universidades[1].add(universidad.getString("id"));
            }
            return universidades;
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {

            System.out.println(e.getMessage());
            return null;
        }

    }

    public void participa(participarForm p) {
        int userid = p.getUserid();
        int proyid = p.getProyid();
        String checkServ = p.getServ();
        try {
            String participa = "INSERT INTO participa VALUES ('" + userid + "','" + proyid + "','pendiente')";
            state.executeUpdate(participa);

            if (checkServ.equals("true")) {
                String serv = "UPDATE estudiante SET id_proyecto_sc='" + proyid + "' WHERE id='" + userid + "';";
                state.executeUpdate(serv);
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

    }

    public String servicioCom(String id) {
        try {
            String consulta = "SELECT es_servicio_com FROM proyecto WHERE id='" + id + "';";
            ResultSet proyectos = state.executeQuery(consulta);
            proyectos.next();
            String check = proyectos.getString("es_servicio_com");
            return check;
        } catch (Exception e) {
            return "";
        }
    }

    public String getNombreProyecto(String id) {
        try {
            String consulta = "SELECT nombre FROM proyecto WHERE id='" + id + "';";
            ResultSet proyectos = state.executeQuery(consulta);
            proyectos.next();
            String nombre = proyectos.getString("nombre");
            return nombre;
        } catch (Exception e) {
            return "";
        }
    }

    public String proyectosPendientesQuery() {
        try {
            String consulta = "SELECT * FROM proyecto WHERE estatus = 'en espera';";
            ResultSet proyectos = state.executeQuery(consulta);
            String total = " ";
            while (!(proyectos.isLast())) {
                proyectos.next();
                total += "<a href=\"consultarPendiente.jsp?id=" + proyectos.getString("id") + "\" />";
                total += "<div styleId=\"proyecto\" class=\"submit_upas\"><br><b>" + proyectos.getString(4) + "</b>" + "\n";
                total += "<br><u>Área a la que pertenece:</u><br>" + proyectos.getString(2) + "\n";
                total += "<br><u>Objetivos:</u><br>" + proyectos.getString("objetivos") + "\n";
                total += "<br><u>Justificación:</u><br>" + proyectos.getString("justificacion") + "<br>\n";
                total += "</b><br>Vigente desde: " + proyectos.getString("fecha_inicio") + "<br>\n";
                String p = proyectos.getString("es_servicio_com").equals("t") ? "Sí " : "No ";
                total += p + "ofrece servicio comunitario \n";
                total += "</div></a>";
            }
            return total;

        } catch (Exception e) {
            return " ";
        }

    }

    public String proyectoQuery(String id) {

        try {
            String datos = "";
            String consulta = "SELECT * FROM proyecto WHERE id = '" + id + "';";
            ResultSet r = state.executeQuery(consulta);
            if (r.next()) {
                String p = r.getString("es_servicio_com").equals("t") ? "Sí " : "No ";

                datos += r.getString("nombre") + "," + r.getString("fecha_inicio") + "," + r.getString("objetivos") + ",";
                datos += r.getString("justificacion") + "," + p + "ofrece servicio comunitario ,";
                datos += "Area" + "," + r.getString("nro_hombres") + ",";
                datos += r.getString("nro_mujeres") + "," + r.getString("nro_3ra_edad") + "," + r.getString("nro_ninos") + ",";
                datos += r.getString("nro_discapacitados") + "," + r.getString("id_proponente") + "," + r.getString("total_presupuesto") + ",";
                datos += r.getString("nombre_parroquia") + "," + r.getString("nombre_estado") + "," + r.getString("nombre_municipio");
            }
            return datos;

        } catch (Exception e) {
            return null;
        }

    }

    public void aprobarPendienteUpdate(String id) {
        try {

            String aprobar = "UPDATE proyecto SET estatus='aprobado' WHERE id = '" + id + "' ;";
            state.executeUpdate(aprobar);

        } catch (Exception e) {
        }
    }

    public void rechazarPendienteUpdate(String id) {
        try {

            String aprobar = "UPDATE proyecto SET estatus='rechazado' WHERE id = '" + id + "' ;";
            state.executeUpdate(aprobar);

        } catch (Exception e) {
        }
    }

    // Empresas Pendientes
    public ArrayList empresasPendientes() {
        try {
            String consulta = "SELECT u.id, u.username,u.email,o.nombre_parroquia,o.nombre_estado,o.nombre_municipio,o.direccion,e.rif as rif_empresa,e.nombre as nombre_empresa,e.detalles,m.rif as rif_miembro,m.ci,m.nombre as nombre_miembro,m.apellido,m.cargo,m.telefono FROM usuario u, ordinario o, organizacion og, empresa e, miembro m WHERE u.id = o.id and o.id = og.id and og.id = e.id and og.id=m.id_organizacion and tipo=6 and u.estatus='pendiente';";
            ResultSet empresa = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(empresa.isLast())) {
                empresa.next();
                String a = empresa.getString("id");
                String b = empresa.getString("nombre_empresa");
                String c = empresa.getString("rif_empresa");
                String[] datos = {a, b, c};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }

    }

    // Solicitudes de Participacion de Empresas
    public ArrayList solicitudesEmpresaParticipacionProyecto(String id) {
        try {
            String consulta = "SELECT e.id as id_empresa, e.nombre as nombre_empresa, e.rif as rif_empresa FROM empresa e, participa pa, proyecto pr WHERE pr.id =" + id + " and pr.id=pa.id_proyecto and e.id=pa.id_participante and pa.estatus='pendiente';";
            ResultSet empresa = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(empresa.isLast())) {
                empresa.next();
                String a = empresa.getString("id_empresa");
                String b = empresa.getString("nombre_empresa");
                String c = empresa.getString("rif_empresa");
                String[] datos = {a, b, c};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }

    }

    // Solicitudes de Participacion de Empresas
    public ArrayList solicitudesComunidadParticipacionProyecto(String id) {
        try {
            String consulta = "SELECT c.id as id_comunidad, c.nombre as nombre_comunidad FROM comunidad c, proyecto pr, participa pa WHERE pr.id = " + id + " and pr.id=pa.id_proyecto and c.id=pa.id_participante and pa.estatus='pendiente';";
            ResultSet comunidad = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(comunidad.isLast())) {
                comunidad.next();
                String a = comunidad.getString("id_comunidad");
                String b = comunidad.getString("nombre_comunidad");
                String[] datos = {a, b};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }

    }

    // Comunidades Pendientes
    public ArrayList comunidadesPendientes() {
        try {
            String consulta = "SELECT u.id, u.username,u.email,o.nombre_parroquia,o.nombre_municipio,o.nombre_estado,o.direccion,c.nombre as nombre_comunidad,c.condicion_social,c.religion,c.numero_familias,c.nivel_estudio,c.nro_cuaderno_comprobante,c.folio,c.tomo,c.protocolo,c.nro_planilla,c.fecha_registro,m.rif,m.ci,m.nombre as nombre_miembro,m.apellido,m.cargo,m.telefono FROM usuario u, ordinario o, organizacion og, comunidad c, miembro m WHERE u.id = o.id and o.id = og.id and og.id = c.id and og.id=m.id_organizacion and tipo=5 and u.estatus='pendiente';";
            ResultSet comunidad = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(comunidad.isLast())) {
                comunidad.next();
                String a = comunidad.getString("id");
                String b = comunidad.getString("nombre_comunidad");
                String[] datos = {a, b};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }
    }

    //Descripcion PersonaNatural
    public String descripcionPersonaNatural(String id) {
        try {
            String consulta = "SELECT * FROM persona_natural p, usuario u, ordinario o WHERE u.id=" + id + " and u.id = p.id and u.id = o.id;";
            ResultSet natural = state.executeQuery(consulta);
            String total = "";
            while (!(natural.isLast())) {
                natural.next();
                total += "<div><br><b>" + natural.getString("nombre") + " " + natural.getString("apellido") + "</b>" + "\n";
                total += "<br><u>Username:</u><br>" + natural.getString("username") + "<br>\n";
                total += "</b><u>E-mail:</u><br> " + natural.getString("email") + "<br>\n";
                total += "</b>Fecha de nacimiento: " + natural.getString("fecha_nac") + "<br>\n";
                String es = "";
                if ((es = natural.getString("estrato_social")) == null) {
                    es = "No asignada";
                }
                String religion = "";
                if ((religion = natural.getString("religion")) == null) {
                    religion = "No asignada";
                }
                total += "</b>Condición Social: " + es + "<br>\n";
                total += "</b>Religión: " + religion + "<br>\n";
                String sexo = "";
                if (natural.getString("sexo").equals("f")) {
                    sexo = "femenino";
                } else {
                    sexo = "masculino";
                }
                total += "</b>Sexo: " + sexo + "<br>\n";
                total += "</b>Edad: " + natural.getString("edad") + "<br>\n";
                total += "</b>Niveles de estudio: " + natural.getString("nivel_instruccion") + "<br>\n";
                total += "</b>Experiencia: " + natural.getString("experiencia") + "<br>\n";
                total += "</b>Dirección: " + natural.getString("direccion") + "<br>\n";
                total += "</b>Parroquia: " + natural.getString("nombre_parroquia") + "<br>\n";
                total += "</b>Municipio: " + natural.getString("nombre_municipio") + "<br>\n";
                total += "</b>Estado: " + natural.getString("nombre_estado") + "<br>\n";

            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    //Descripcion Profesor
    public String descripcionProfesor(String id) {
        try {
            String total = descripcionPersonaNatural(id);
            String consulta = "SELECT * FROM profesor p, esta_adscrito ea, universidad u WHERE p.id=" + id + " and p.id = ea.id_profesor and ea.id_universidad=u.id;";
            ResultSet profesor = state.executeQuery(consulta);
            while (!(profesor.isLast())) {
                profesor.next();
                total += "</b>Universidad: " + profesor.getString("nombre") + "<br>\n";
                total += "</b>Núcleo: " + profesor.getString("nucleo") + "<br>\n";
                String es = "";
                if ((es = profesor.getString("carnet")) == null) {
                    es = "No aplica";
                }
                total += "</b>Carnet: " + es + "<br>\n";
                String nd = "";
                if ((nd = profesor.getString("nombre_departamento")) == null) {
                    nd = "No aplica";
                }
                total += "</b>Nombre del departamento al que pertenece: " + nd + "</div>";


            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    //Descripcion Estudiante
    public String descripcionEstudiante(String id) {
        try {
            String total = descripcionPersonaNatural(id);
            String consulta = "SELECT e.carnet,e.fecha_ingreso,u.nombre as nombre_universidad, u.nucleo, c.nombre as nombre_carrera FROM estudiante e, carrera c, universidad u WHERE e.id=" + id + " and e.id_universidad = u.id and e.id_carrera=c.id;";
            ResultSet estudiante = state.executeQuery(consulta);
            while (!(estudiante.isLast())) {
                estudiante.next();
                total += "</b>Universidad: " + estudiante.getString("nombre_universidad") + "<br>\n";
                total += "</b>Núcleo : " + estudiante.getString("nucleo") + "<br>\n";
                String es = "";
                if ((es = estudiante.getString("carnet")) == null) {
                    es = "No aplica";
                }
                total += "</b>Carnet: " + es + "<br>\n";
                total += "</b>Carrera: " + estudiante.getString("nombre_carrera") + "<br>\n";
                total += "</b>Fecha de Ingreso: " + estudiante.getString("fecha_ingreso") + "</div>";


            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    //Descripcion Otro
    public String descripcionOtro(String id) {
        try {
            String total = descripcionPersonaNatural(id);
            String consulta = "SELECT* FROM otro WHERE id=" + id + ";";
            ResultSet otro = state.executeQuery(consulta);
            while (!(otro.isLast())) {
                otro.next();
                total += "</b>Profesión: " + otro.getString("profesion") + "<br>\n";
                total += "</b>Lugar de Trabajo : " + otro.getString("lugar_trabajo") + "</div>";

            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    //Descripcion Comunidad
    public String descripcionComunidad(String id) {
        try {
            String consulta = "SELECT u.username,u.email,o.nombre_parroquia,o.nombre_municipio,o.nombre_estado,o.direccion,c.nombre as nombre_comunidad,c.condicion_social,c.religion,c.numero_familias,c.nivel_estudio,c.nro_cuaderno_comprobante,c.folio,c.tomo,c.protocolo,c.nro_planilla,c.fecha_registro,m.rif,m.ci,m.nombre as nombre_miembro,m.apellido,m.cargo,m.telefono FROM usuario u, ordinario o, organizacion og, comunidad c, miembro m WHERE u.id=" + id + " and u.id = o.id and o.id = og.id and og.id = c.id and og.id=m.id_organizacion;";
            ResultSet comunidad = state.executeQuery(consulta);
            String total = "";
            while (!(comunidad.isLast())) {
                comunidad.next();
                total += "<div><br><b>" + comunidad.getString("nombre_comunidad") + "</b>" + "\n";
                total += "<br><u>Username:</u><br>" + comunidad.getString("username") + "<br>\n";
                total += "</b><u>E-mail:</u><br> " + comunidad.getString("email") + "<br>\n";
                total += "</b><br>Condicion Social: " + comunidad.getString("condicion_social") + "<br>\n";
                String religion;
                if ((religion = comunidad.getString("religion")) == null) {
                    religion = "No asignada";
                }
                total += "</b>Religion: " + religion + "<br>\n";
                total += "</b>Numero de familias: " + comunidad.getString("numero_familias") + "<br>\n";
                total += "</b>Niveles de estudio: " + comunidad.getString("nivel_estudio") + "<br>\n";
                total += "</b>Nro. cuaderno comprobante: " + comunidad.getString("nro_cuaderno_comprobante") + "<br>\n";
                total += "</b>Folio: " + comunidad.getString("folio") + "<br>\n";
                total += "</b>Tomo: " + comunidad.getString("tomo") + "<br>\n";
                total += "</b>Protocolo: " + comunidad.getString("protocolo") + "<br>\n";
                total += "</b>Nro. Planilla: " + comunidad.getString("nro_planilla") + "<br>\n";
                total += "</b>Fecha de registro: " + comunidad.getString("fecha_registro") + "<br>\n";
                total += "</b>Direccion: " + comunidad.getString("direccion") + "<br>\n";
                total += "</b>Parroquia: " + comunidad.getString("nombre_parroquia") + "<br>\n";
                total += "</b>Municipio: " + comunidad.getString("nombre_municipio") + "<br>\n";
                total += "</b>Estado: " + comunidad.getString("nombre_estado") + "<br>\n";
                total += "<br><u>Persona Contacto:</u><br>" + comunidad.getString("nombre_miembro") + " " + comunidad.getString("apellido") + "<br>\n";
                if ((comunidad.getString("rif")) != null) {
                    total += "</b>Rif: " + comunidad.getString("rif") + "<br>\n";
                }
                total += "</b>Cedula de Identidad: " + comunidad.getString("ci") + "<br>\n";
                total += "</b>Cargo: " + comunidad.getString("cargo") + "<br>\n";
                total += "</b>Telefono: " + comunidad.getString("telefono") + "<br></div>\n";
            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    //Descripcion Empresa
    public String descripcionEmpresa(String id) {
        try {
            String consulta = "SELECT u.username,u.email,o.nombre_parroquia,o.nombre_estado,o.nombre_municipio,o.direccion,e.rif as rif_empresa,e.nombre as nombre_empresa,e.detalles,m.rif as rif_miembro,m.ci,m.nombre as nombre_miembro,m.apellido,m.cargo,m.telefono FROM usuario u, ordinario o, organizacion og, empresa e, miembro m WHERE u.id=" + id + " and u.id = o.id and o.id = og.id and og.id = e.id and og.id=m.id_organizacion;";
            ResultSet empresa = state.executeQuery(consulta);
            String total = "";
            while (!(empresa.isLast())) {
                empresa.next();
                total += "<div><br><b>" + empresa.getString("nombre_empresa") + "</b>" + "\n";
                total += "<br><u>Username:</u><br>" + empresa.getString("username") + "\n";
                total += "<br><u>E-mail:</u><br>" + empresa.getString("email") + "\n";
                total += "<br><u>Rif: </u><br> " + empresa.getString("rif_empresa") + "<br>\n";
                total += "</b><br>Direccion: " + empresa.getString("direccion") + "<br>\n";
                total += "</b>Parroquia: " + empresa.getString("nombre_parroquia") + "<br>\n";
                total += "</b>Muncipio: " + empresa.getString("nombre_municipio") + "<br>\n";
                total += "</b>Estado: " + empresa.getString("nombre_estado") + "<br>\n";
                total += "<br><u>Persona Contacto:</u><br>" + empresa.getString("nombre_miembro") + " " + empresa.getString("apellido") + "<br>\n";
                if ((empresa.getString("rif_miembro")) != null) {
                    total += "</b>Rif: " + empresa.getString("rif_miembro") + "<br>\n";
                }
                total += "</b>Cedula de Identidad: " + empresa.getString("ci") + "<br>\n";
                total += "</b>Cargo: " + empresa.getString("cargo") + "<br>\n";
                total += "</b>Telefono: " + empresa.getString("telefono") + "<br></div>\n";

            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    // Empresas Activadas
    public String empresasActivadas() {
        try {
            String consulta = "SELECT u.username,u.email,o.nombre_parroquia,o.nombre_estado,o.nombre_municipio,o.direccion,e.rif as rif_empresa,e.nombre as nombre_empresa,e.detalles,m.rif as rif_miembro,m.ci,m.nombre as nombre_miembro,m.apellido,m.cargo,m.telefono FROM usuario u, ordinario o, organizacion og, empresa e, miembro m WHERE u.id = o.id and o.id = og.id and og.id = e.id and og.id=m.id_organizacion and tipo=6 and u.estatus='activado';";
            ResultSet empresa = state.executeQuery(consulta);
            String total = "";
            while (!(empresa.isLast())) {
                empresa.next();
                total += "<div class=\"submit_upas\"><br><b>" + empresa.getString("nombre_empresa") + "</b>" + "\n";
                total += "<br><u>Username:</u><br>" + empresa.getString("username") + "\n";
                total += "<br><u>E-mail:</u><br>" + empresa.getString("email") + "\n";
                total += "<br><u>Rif: </u><br> " + empresa.getString("rif_empresa") + "<br>\n";
                total += "</b><br>Detalles: " + empresa.getString("detalles") + "<br>\n";
                total += "</b>Direccion: " + empresa.getString("direccion") + "<br>\n";
                total += "</b>Parroquia: " + empresa.getString("nombre_parroquia") + "<br>\n";
                total += "</b>Muncipio: " + empresa.getString("nombre_municipio") + "<br>\n";
                total += "</b>Estado: " + empresa.getString("nombre_estado") + "<br>\n";
                total += "<br><u>Persona Contacto:</u><br>" + empresa.getString("nombre_miembro") + " " + empresa.getString("apellido") + "<br>\n";
                if ((empresa.getString("rif_miembro")) != null) {
                    total += "</b>Rif: " + empresa.getString("rif_miembro") + "<br>\n";
                }
                total += "</b>Cedula de Identidad: " + empresa.getString("ci") + "<br>\n";
                total += "</b>Cargo: " + empresa.getString("cargo") + "<br>\n";
                total += "</b>Telefono: " + empresa.getString("telefono") + "<br></div>\n";

            }
            return total;

        } catch (Exception e) {
            return "";
        }

    }

    // Comunidades Activadas
    public String comunidadesActivadas() {
        try {
            String consulta = "SELECT u.username,u.email,o.nombre_parroquia,o.nombre_municipio,o.nombre_estado,o.direccion,c.nombre as nombre_comunidad,c.condicion_social,c.religion,c.numero_familias,c.nivel_estudio,c.nro_cuaderno_comprobante,c.folio,c.tomo,c.protocolo,c.nro_planilla,c.fecha_registro,m.rif,m.ci,m.nombre as nombre_miembro,m.apellido,m.cargo,m.telefono FROM usuario u, ordinario o, organizacion og, comunidad c, miembro m WHERE u.id = o.id and o.id = og.id and og.id = c.id and og.id=m.id_organizacion and tipo=5 and u.estatus='activado';";
            ResultSet comunidad = state.executeQuery(consulta);
            String total = "";
            while (!(comunidad.isLast())) {
                comunidad.next();
                total += "<div class=\"submit_upas\"><br><b>" + comunidad.getString("nombre_comunidad") + "</b>" + "\n";
                total += "<br><u>Username:</u><br>" + comunidad.getString("username") + "<br>\n";
                total += "</b><u>E-mail:</u><br> " + comunidad.getString("email") + "<br>\n";
                total += "</b><br>Condicion Social: " + comunidad.getString("condicion_social") + "<br>\n";
                total += "</b>Religion: " + comunidad.getString("religion") + "<br>\n";
                total += "</b>Numero de familias: " + comunidad.getString("numero_familias") + "<br>\n";
                total += "</b>Niveles de estudio: " + comunidad.getString("nivel_estudio") + "<br>\n";
                total += "</b>Nro. cuaderno comprobante: " + comunidad.getString("nro_cuaderno_comprobante") + "<br>\n";
                total += "</b>Folio: " + comunidad.getString("folio") + "<br>\n";
                total += "</b>Tomo: " + comunidad.getString("tomo") + "<br>\n";
                total += "</b>Protocolo: " + comunidad.getString("protocolo") + "<br>\n";
                total += "</b>Nro. Planilla: " + comunidad.getString("nro_planilla") + "<br>\n";
                total += "</b>Fecha de registro: " + comunidad.getString("fecha_registro") + "<br>\n";
                total += "</b>Direccion: " + comunidad.getString("direccion") + "<br>\n";
                total += "</b>Parroquia: " + comunidad.getString("nombre_parroquia") + "<br>\n";
                total += "</b>Municipio: " + comunidad.getString("nombre_municipio") + "<br>\n";
                total += "</b>Estado: " + comunidad.getString("nombre_estado") + "<br>\n";
                total += "<br><u>Persona Contacto:</u><br>" + comunidad.getString("nombre_miembro") + " " + comunidad.getString("apellido") + "<br>\n";
                if ((comunidad.getString("rif")) != null) {
                    total += "</b>Rif: " + comunidad.getString("rif") + "<br>\n";
                }
                total += "</b>Cedula de Identidad: " + comunidad.getString("ci") + "<br>\n";
                total += "</b>Cargo: " + comunidad.getString("cargo") + "<br>\n";
                total += "</b>Telefono: " + comunidad.getString("telefono") + "<br></div>\n";
            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    // Empresas Desactivadas
    public String empresasDesactivadas() {
        try {
            String consulta = "SELECT u.username,u.email,o.nombre_parroquia,o.nombre_estado,o.nombre_municipio,o.direccion,e.rif as rif_empresa,e.nombre as nombre_empresa,e.detalles,m.rif as rif_miembro,m.ci,m.nombre as nombre_miembro,m.apellido,m.cargo,m.telefono FROM usuario u, ordinario o, organizacion og, empresa e, miembro m WHERE u.id = o.id and o.id = og.id and og.id = e.id and og.id=m.id_organizacion and tipo=6 and u.estatus='desactivado';";
            ResultSet empresa = state.executeQuery(consulta);
            String total = "";
            while (!(empresa.isLast())) {
                empresa.next();
                total += "<div class=\"submit_upas\"><br><b>" + empresa.getString("nombre_empresa") + "</b>" + "\n";
                total += "<br><u>Username:</u><br>" + empresa.getString("username") + "\n";
                total += "<br><u>E-mail:</u><br>" + empresa.getString("email") + "\n";
                total += "<br><u>Rif: </u><br> " + empresa.getString("rif_empresa") + "<br>\n";
                total += "</b><br>Detalles: " + empresa.getString("detalles") + "<br>\n";
                total += "</b>Direccion: " + empresa.getString("direccion") + "<br>\n";
                total += "</b>Parroquia: " + empresa.getString("nombre_parroquia") + "<br>\n";
                total += "</b>Muncipio: " + empresa.getString("nombre_municipio") + "<br>\n";
                total += "</b>Estado: " + empresa.getString("nombre_estado") + "<br>\n";
                total += "<br><u>Persona Contacto:</u><br>" + empresa.getString("nombre_miembro") + " " + empresa.getString("apellido") + "<br>\n";
                if ((empresa.getString("rif_miembro")) != null) {
                    total += "</b>Rif: " + empresa.getString("rif_miembro") + "<br>\n";
                }
                total += "</b>Cedula de Identidad: " + empresa.getString("ci") + "<br>\n";
                total += "</b>Cargo: " + empresa.getString("cargo") + "<br>\n";
                total += "</b>Telefono: " + empresa.getString("telefono") + "<br></div>\n";

            }
            return total;

        } catch (Exception e) {
            return "";
        }

    }

    // Comunidades Desactivadas
    public String comunidadesDesactivadas() {
        try {
            String consulta = "SELECT u.username,u.email,o.nombre_parroquia,o.nombre_municipio,o.nombre_estado,o.direccion,c.nombre as nombre_comunidad,c.condicion_social,c.religion,c.numero_familias,c.nivel_estudio,c.nro_cuaderno_comprobante,c.folio,c.tomo,c.protocolo,c.nro_planilla,c.fecha_registro,m.rif,m.ci,m.nombre as nombre_miembro,m.apellido,m.cargo,m.telefono FROM usuario u, ordinario o, organizacion og, comunidad c, miembro m WHERE u.id = o.id and o.id = og.id and og.id = c.id and og.id=m.id_organizacion and tipo=5 and u.estatus='desactivado';";
            ResultSet comunidad = state.executeQuery(consulta);
            String total = "";
            while (!(comunidad.isLast())) {
                comunidad.next();
                total += "<div class=\"submit_upas\"><br><b>" + comunidad.getString("nombre_comunidad") + "</b>" + "\n";
                total += "<br><u>Username:</u><br>" + comunidad.getString("username") + "<br>\n";
                total += "</b><u>E-mail:</u><br> " + comunidad.getString("email") + "<br>\n";
                total += "</b><br>Condicion Social: " + comunidad.getString("condicion_social") + "<br>\n";
                total += "</b>Religion: " + comunidad.getString("religion") + "<br>\n";
                total += "</b>Numero de familias: " + comunidad.getString("numero_familias") + "<br>\n";
                total += "</b>Niveles de estudio: " + comunidad.getString("nivel_estudio") + "<br>\n";
                total += "</b>Nro. cuaderno comprobante: " + comunidad.getString("nro_cuaderno_comprobante") + "<br>\n";
                total += "</b>Folio: " + comunidad.getString("folio") + "<br>\n";
                total += "</b>Tomo: " + comunidad.getString("tomo") + "<br>\n";
                total += "</b>Protocolo: " + comunidad.getString("protocolo") + "<br>\n";
                total += "</b>Nro. Planilla: " + comunidad.getString("nro_planilla") + "<br>\n";
                total += "</b>Fecha de registro: " + comunidad.getString("fecha_registro") + "<br>\n";
                total += "</b>Direccion: " + comunidad.getString("direccion") + "<br>\n";
                total += "</b>Parroquia: " + comunidad.getString("nombre_parroquia") + "<br>\n";
                total += "</b>Municipio: " + comunidad.getString("nombre_municipio") + "<br>\n";
                total += "</b>Estado: " + comunidad.getString("nombre_estado") + "<br>\n";
                total += "<br><u>Persona Contacto:</u><br>" + comunidad.getString("nombre_miembro") + " " + comunidad.getString("apellido") + "<br>\n";
                if ((comunidad.getString("rif")) != null) {
                    total += "</b>Rif: " + comunidad.getString("rif") + "<br>\n";
                }
                total += "</b>Cedula de Identidad: " + comunidad.getString("ci") + "<br>\n";
                total += "</b>Cargo: " + comunidad.getString("cargo") + "<br>\n";
                total += "</b>Telefono: " + comunidad.getString("telefono") + "<br></div>\n";
            }
            return total;

        } catch (Exception e) {
            return "";
        }
    }

    public ArrayList getMisProyectos(String userid) {
        try {
            String consulta = "SELECT * FROM proyectos_especiales pe,proyecto p WHERE pe.id_proyecto = p.id and id_proponente='" + userid + "';";
            ResultSet proyectos = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(proyectos.isLast())) {
                proyectos.next();
                String s = proyectos.getString(10);

                String[] datos = {proyectos.getString(1), proyectos.getString(4), s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase()};
                PA.add(datos);



            }
            return PA;
        } catch (Exception e) {
            return null;
        }
    }

    //Aprobar Registro
    public void aprobarRegistro(String id) {
        try {
            String aprobar = "update usuario set estatus='activado' WHERE id=" + id + ";";
            state.executeUpdate(aprobar);
        } catch (Exception e) {
        }
    }

    //Rechazar Registro
    public void rechazarRegistro(String id) {
        try {
            String aprobar = "update usuario set estatus='desactivado' WHERE id=" + id + ";";
            state.executeUpdate(aprobar);
        } catch (Exception e) {
        }
    }

    //Aprobar Participacion
    public void aprobarParticipacion(String id, String pid) {
        try {
            String aprobar = "update participa set estatus='aprobado' WHERE id_participante=" + id + " and id_proyecto=" + pid + ";";
            state.executeUpdate(aprobar);
        } catch (Exception e) {
        }
    }

    //Rechazar Participacion
    public void rechazarParticipacion(String id, String pid) {
        try {
            String aprobar = "update participa set estatus='rechazado' WHERE id_participante=" + id + " and id_proyecto=" + pid + ";";
            state.executeUpdate(aprobar);
        } catch (Exception e) {
        }
    }

    public void desactivarUsuario(String username) {
        try {
            String desactivar = "update usuario set estatus='desactivado' WHERE username='" + username + "'   ;";
            state.executeUpdate(desactivar);
        } catch (Exception e) {
        }

    }

    public String[] ProyectoQuery(String userid) {
        try {
            String consulta = "SELECT * FROM proyecto WHERE id='" + userid + "';";
            ResultSet proyectos = state.executeQuery(consulta);
            String[] P = new String[16];
            proyectos.next();
            if (proyectos != null) {
                P[8] = "" + proyectos.getString(11);
                P[0] = proyectos.getString(2); //nombre
                P[1] = proyectos.getString(3); //fecha
                P[2] = proyectos.getString(19); //estado
                P[3] = proyectos.getString(20); //municipio
                P[4] = proyectos.getString(18); //parroquia
                P[5] = proyectos.getString(4); //objetivos
                P[6] = proyectos.getString(5); //justificacion
                P[7] = proyectos.getString(10); //area
                P[15] = proyectos.getString(11); //nro_hombres
                P[9] = proyectos.getString(12); //nro mujeres
                P[10] = proyectos.getString(13); //nro 3ra edad
                P[11] = proyectos.getString(14); //nro ninos
                P[12] = proyectos.getString(15); //nro discapacitados
                P[13] = proyectos.getString(17); //total presupuesto
                P[14] = proyectos.getString(6); //serv_com
                if (P[7] != null) {
                    String SQL = "SELECT nombre FROM area WHERE id=" + P[7] + ";";
                    ResultSet area = state.executeQuery(SQL);
                    area.next();
                    P[7] = area.getString(1);
                }
                if (P[14] != null) {
                    if (P[14].equals("f")) {
                        P[14] = "El Proyecto No Ofrece Servicio Comunitario";
                    } else {
                        P[14] = "El Proyecto Ofrece Servicio Comunitario";
                    }
                }
            }
            P[0] = (P[0] == null ? "" : P[0]);
            P[1] = (P[1] == null ? "" : P[1]);
            P[2] = (P[2] == null ? "" : P[2]);
            P[3] = (P[3] == null ? "" : P[3]);
            P[4] = (P[4] == null ? "" : P[4]);
            P[5] = (P[5] == null ? "" : P[5]);
            P[6] = (P[6] == null ? "" : P[6]);
            P[7] = (P[7] == null ? "" : P[7]);
            P[8] = (P[8] == null ? "" : P[8]);
            P[9] = (P[9] == null ? "" : P[9]);
            P[10] = (P[10] == null ? "" : P[10]);
            P[11] = (P[11] == null ? "" : P[11]);
            P[12] = (P[12] == null ? "" : P[12]);
            P[13] = (P[13] == null ? "" : P[13]);
            P[14] = (P[14] == null ? "" : P[14]);
            return P;
        } catch (Exception e) {
            return null;
        }
    }

    public void proyectoUpdate(modProyectoForm form) {

        try {
            String id_area = form.getNombre_area(),
                    nombre = (form.getNombre() == null ? "NULL" : "'" + form.getNombre() + "'"),
                    fecha_inicio = (form.getFecha_inicio() == null ? "NULL" : "'" + form.getFecha_inicio() + "'"),
                    nombre_estado = (form.getEstado() == null ? "NULL" : "'" + form.getEstado() + "'"),
                    nombre_municipio = (form.getMunicipio() == null ? "NULL" : "'" + form.getMunicipio() + "'"),
                    nombre_parroquia = (form.getParroquia() == null ? "NULL" : "'" + form.getParroquia() + "'"),
                    objetivos = (form.getObjetivos() == null ? "NULL" : "'" + form.getObjetivos() + "'"),
                    justificacion = (form.getJustificacion() == null ? "NULL" : "'" + form.getJustificacion() + "'"),
                    estatus = (form.getStatus() == null ? "NULL" : form.getStatus()),
                    es_servicio_com = (form.getEs_servicio_comunitario() == null ? "NULL" : "'" + form.getEs_servicio_comunitario() + "'");

	    String etapas[] = form.getnE();
	    String inic[] = form.getnFI();
	    String fin[] = form.getnFF();
	    
            if (nombre.equals("''")) {
                nombre = "NULL";
            }
            if (fecha_inicio.equals("''")) {
                fecha_inicio = "NULL";
            }
            if (nombre_estado.equals("''")) {
                nombre_estado = "NULL";
            }
            if (nombre_municipio.equals("''")) {
                nombre_municipio = "NULL";
            }
            if (nombre_parroquia.equals("''")) {
                nombre_parroquia = "NULL";
            }
            if (objetivos.equals("''")) {
                objetivos = "NULL";
            }
            if (justificacion.equals("''")) {
                justificacion = "NULL";
            }
            if (estatus.equals("''")) {
                estatus = "NULL";
            }
            if (es_servicio_com.equals("''")) {
                es_servicio_com = "NULL";
            }

            if (id_area.equals("")) {
                id_area = null;
            }

            if (id_area != null) {
                ResultSet idArea = state.executeQuery("SELECT id FROM area WHERE nombre='" + id_area + "';");
                idArea.next();
                id_area = "'" + idArea.getString("id") + "'";
            } else {
                id_area = "NULL";
            }
            String SQL = "UPDATE proyecto SET "
                    + "nombre=" + nombre + ","
                    + "fecha_inicio=" + fecha_inicio + ","
                    + "nombre_estado=" + nombre_estado + ","
                    + "nombre_municipio=" + nombre_municipio + ","
                    + "nombre_parroquia=" + nombre_parroquia + ","
                    + "objetivos=" + objetivos + ","
                    + "justificacion=" + justificacion + ","
                    + "id_area=" + id_area + ","
                    + "nro_hombres='" + form.getNro_hombres() + "',"
                    + "nro_mujeres='" + form.getNro_mujeres() + "',"
                    + "nro_3ra_edad='" + form.getNro_3era_edad() + "',"
                    + "nro_ninos='" + form.getNro_ninos() + "',"
                    + "nro_discapacitados='" + form.getNro_discapacitados() + "',"
                    + "total_presupuesto ='"+ form.getTotal_presupuesto() +"',"
                    + "es_servicio_com=" + es_servicio_com + ", "
                    + "estatus='" + estatus + "' "
                    + "WHERE id='" + form.getId() + "';";
            state.executeUpdate(SQL);
	    
	   
	    String borrarEtapas = "DELETE FROM etapa WHERE id_proyecto='"+ form.getId()+"';";
	    state.executeUpdate(borrarEtapas);
	    int tamEtapas = etapas.length;
	    String insertEtapa = "";
	   
	     // Obtenemos el id del proyecto especial
	    String getIdesp = "SELECT id FROM proyectos_especiales WHERE id_proyecto='"+form.getId()+"';";
	     ResultSet SelectPEID = state.executeQuery(getIdesp);
            SelectPEID.next();
	     String pEid = SelectPEID.getString("id");
	    
	    for (int i=0; i<tamEtapas;i++){
		 insertEtapa = "INSERT into etapa values (default,'"+etapas[i]+"','"+inic[i]+"','"+fin[i]+"','"+form.getId()+"','"+pEid+"')";
		 state.executeUpdate(insertEtapa);
	    }
        } catch (Exception e) {
        }
    }

    public boolean checkUsername(String user) {
        try {
            String query = "SELECT username FROM usuario WHERE username='" + user + "'";
            ResultSet users = state.executeQuery(query);
            boolean existe = users.next();
            return existe;
        } catch (Exception e) {
            return false;
        }
    }

    public boolean checkEmail(String email) {
        try {
            String query = "SELECT email FROM usuario WHERE email='" + email + "'";
            ResultSet users = state.executeQuery(query);
            boolean existe = users.next();
            return existe;
        } catch (Exception e) {
            return false;
        }
    }

    public boolean checkRif(String rif) {
        try {
            String query = "SELECT rif FROM empresa WHERE rif='" + rif + "'";
            ResultSet users = state.executeQuery(query);
            boolean existe = users.next();
            return existe;
        } catch (Exception e) {
            return false;
        }
    }

    public String estatusProy(String id) {
        try {
            String query = "SELECT estatus FROM proyecto WHERE id='" + id + "'";
            ResultSet users = state.executeQuery(query);
            users.next();
            return users.getString("estatus");
        } catch (Exception e) {
            return null;
        }
    }

    public String getProponenteId(String id) {
        try {
            String query = "SELECT id_proponente FROM proyecto WHERE id='" + id + "'";
            ResultSet users = state.executeQuery(query);
            users.next();
            return users.getString("id_proponente");
        } catch (Exception e) {
            return null;
        }
    }

    public String obtenerUbicacion(String username) {

        try {
            String datos[] = new String[2];
            datos = obtenerInfoUsuario(username);

            String consulta = "SELECT * FROM ordinario WHERE id='" + datos[1] + "';";
            ResultSet respuesta = state.executeQuery(consulta);
            respuesta.next();
            datos[0] = respuesta.getString("nombre_parroquia") + "," + respuesta.getString("nombre_estado") + ",";
            datos[0] += respuesta.getString("nombre_municipio");
            return datos[0];

        } catch (Exception e) {
            return null;
        }
    }

    public String[] datosProponente(String userid) {

        try {

            String consulta = "SELECT username,email FROM usuario WHERE id='" + userid + "';";
            ResultSet respuesta = state.executeQuery(consulta);
            respuesta.next();
            String email[] = {respuesta.getString("username"), respuesta.getString("email")};
            return email;

        } catch (Exception e) {
            return null;
        }

    }

    public ArrayList getUsuarios(String tipo) {
        try {
            String query = "SELECT username FROM " + tipo + " NATURAL JOIN usuario WHERE estatus='activado' ORDER BY username;";
            ResultSet est = state.executeQuery(query);
            ArrayList estudiantes = new ArrayList();
            while (est.next()) {
                estudiantes.add(est.getString("username"));
            }
            return estudiantes;

        } catch (Exception e) {

            System.out.println(e.getMessage());
            return null;

        }
    }

    public String obtenerInfoUniversidad(String username, int tipo) {
        try {
            String datos[] = new String[2];
            datos = obtenerInfoUsuario(username);
            String consulta = "";
            ResultSet respuesta;

            if (tipo == 2) {
                consulta = "SELECT id_universidad FROM estudiante WHERE id ='" + datos[1] + "' ;";
                respuesta = state.executeQuery(consulta);
            } else {
                consulta = "SELECT id_universidad FROM esta_adscrito WHERE id_profesor ='" + datos[1] + "' ;";
                respuesta = state.executeQuery(consulta);
            }
            respuesta.next();
            String id_universidad = respuesta.getString("id_universidad");


            String consulta2 = "SELECT * FROM universidad WHERE id ='" + id_universidad + "' ;";
            respuesta = state.executeQuery(consulta2);
            respuesta.next();
            String info = respuesta.getString("nombre") + "," + respuesta.getString("nucleo");

            return info;
        } catch (Exception e) {
            return null;
        }
    }

    public String obtenerCarrera(String username) {
        try {
            String datos[] = new String[2];
            datos = obtenerInfoUsuario(username);

            String consulta = "SELECT id_carrera FROM estudiante WHERE id ='" + datos[1] + "' ;";
            ResultSet respuesta = state.executeQuery(consulta);

            respuesta.next();
            String id_carrera = respuesta.getString("id_carrera");

            String consulta2 = "SELECT * FROM carrera WHERE id ='" + id_carrera + "' ;";
            respuesta = state.executeQuery(consulta2);
            respuesta.next();
            String info = respuesta.getString("nombre") + ",";

            return info;
        } catch (Exception e) {
            return null;
        }
    }

    public String getParticipacion(String userid, String pid) {
        try {

            String consulta = "SELECT estatus FROM participa WHERE id_participante='" + userid + "' and id_proyecto='" + pid + "';";
            ResultSet respuesta = state.executeQuery(consulta);

            respuesta.next();
            String participa = respuesta.getString(1);
            return participa;
        } catch (Exception e) {
            return "";
        }
    }

    public static String[] checkUser(String user) {
        try {
            String consulta = "SELECT username, estatus FROM usuario WHERE username='" + user + "';";
            ResultSet respuesta = state.executeQuery(consulta);

            respuesta.next();
            String check[] = {respuesta.getString(1), respuesta.getString(2)};

            return check;
        } catch (Exception e) {
            return null;
        }
    }

    public ArrayList getProyectosParticipa(String userid) {
        try {
            String consulta = "SELECT nombre, id_proyecto FROM participa natural join proyecto p WHERE id_proyecto=p.id and id_participante='" + userid + "' and estatus='aprobado';";
            ResultSet proyectos = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(proyectos.isLast())) {
                proyectos.next();
                String a = proyectos.getString("nombre");
                String b = proyectos.getString("id_proyecto");

                String[] datos = {a, b};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }
    }

    public void reporteInsert(reporteForm formBean) {

        String asunto = formBean.getAsunto();
        String reporte = formBean.getReporte();
        String tipo = formBean.getTipo();
        String etapa = formBean.getEtapa();
        String pid = formBean.getPid();
        String uid = formBean.getUid();
        try {
            String pe = "SELECT id FROM proyectos_especiales WHERE id_proyecto='" + pid + "';";
            ResultSet result = state.executeQuery(pe);
            result.next();
            String pe_id = result.getString("id");

            String et = "SELECT id FROM etapa WHERE nombre='" + etapa + "' and id_proyecto='" + pid + "' and id_proyecto_especial='" + pe_id + "';";
            result = state.executeQuery(et);
            result.next();
            String et_id = result.getString("id");

            String rep = "INSERT into reporte values (default, '" + pid + "', '" + pe_id + "','" + et_id + "','" + asunto + "','" + reporte + "','" + uid + "','" + tipo + "');";
            state.executeUpdate(rep);
        } catch (Exception e) {
        }
    }

    public ArrayList getProyectosReporte() {
        try {
            String consulta = "SELECT distinct nombre, p.id FROM proyectos_especiales pe, proyecto p, reporte r WHERE pe.id_proyecto = p.id and p.id=r.id_proyecto;";
            ResultSet proyectos = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(proyectos.isLast())) {
                proyectos.next();
                String a = proyectos.getString("nombre");
                String b = proyectos.getString("id");

                String[] datos = {a, b};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }
    }

    public ArrayList getReportes(String pid) {
        try {
            String consulta = " select r.id, asunto, username FROM usuario u, reporte r WHERE u.id=id_proponente and id_proyecto='" + pid + "';";
            ResultSet proyectos = state.executeQuery(consulta);
            ArrayList PA = new ArrayList();
            while (!(proyectos.isLast())) {
                proyectos.next();
                String a = proyectos.getString("asunto");
                String b = proyectos.getString("username");
                String c = proyectos.getString("id");


                String[] datos = {a, b, c};
                PA.add(datos);
            }
            return PA;
        } catch (Exception e) {
            return null;
        }
    }

    public String[] detalleRep(String repId) {
        try {
            String consulta = " select u.id,u.tipo as tipo_usuario,r.asunto,r.descripcion,r.tipo,e.nombre as nombre_etapa FROM reporte r, etapa e, usuario u WHERE r.id='" + repId + "' and r.id_etapa = e.id and r.id_proponente=u.id;";
            ResultSet reporte = state.executeQuery(consulta);
            reporte.next();
            String a = "";
            String b = reporte.getString(3);
            String c = reporte.getString("descripcion");
            String d = reporte.getString("tipo");
            String e = reporte.getString("nombre_etapa");
            String id_user = reporte.getString("id");
            
            if (reporte.getString("tipo_usuario").equals("2") || reporte.getString("tipo_usuario").equals("3") || reporte.getString("tipo_usuario").equals("4")) {
                consulta = "SELECT nombre,apellido FROM persona_natural WHERE id='" + id_user + "';";
                ResultSet responsable = state.executeQuery(consulta);
                responsable.next();
                a = responsable.getString("nombre") + " " + responsable.getString("apellido");
            } else if (reporte.getString("tipo_usuario").equals("5")) {
                consulta = "SELECT nombre FROM comunidad WHERE id='" + id_user + "';";
                ResultSet responsable = state.executeQuery(consulta);
                responsable.next();
                a = responsable.getString("nombre");
            } else if (reporte.getString("tipo_usuario").equals("6")) {
                consulta = "SELECT nombre FROM empresa WHERE id='" + id_user + "';";
                ResultSet responsable = state.executeQuery(consulta);
                responsable.next();
                a = responsable.getString("nombre");
            }

            

            String[] datos = {a, b, c, d, e};
            return datos;
        } catch (Exception e) {
            return null;
        }
    }

    public void modRelCond(modReligionEstratoForm formBean) {
        String religion = formBean.getReligion();
        String condSocial = formBean.getCondSocial();
        String id = formBean.getId();
        try {
            String modE = "UPDATE persona_natural SET religion = '" + religion + "' , estrato_social = '" + condSocial + "' WHERE id = '" + id + "';";
            state.executeUpdate(modE);
        } //mostrar errores en caso de no funcionar algo
        catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    
    public ArrayList getEtapa(String pid) {

        try {
            String query = "SELECT nombre, fecha_inicio, fecha_fin FROM etapa WHERE id_proyecto='" + pid + "';";
            ResultSet eta = state.executeQuery(query);
            ArrayList etapas = new ArrayList();
            
            while (eta.next()) {
                etapas.add(eta.getString("nombre"));
            
            }
            return etapas;

        } catch (Exception e) {

            System.out.println(e.getMessage());
            return null;

        }
    }
    

     public ArrayList[] getEtapa2(String pid) {

        try {
            String query = "SELECT nombre, fecha_inicio, fecha_fin FROM etapa WHERE id_proyecto='" + pid + "';";
            ResultSet eta = state.executeQuery(query);
            ArrayList etapas[] = new ArrayList[3];
            etapas[0] = new ArrayList();
            etapas[1] = new ArrayList();
            etapas[2] = new ArrayList();
            while (eta.next()) {
                etapas[0].add(eta.getString("nombre"));
                etapas[1].add(eta.getString("fecha_inicio"));
                etapas[2].add(eta.getString("fecha_fin"));
            }
            return etapas;

        } catch (Exception e) {

            System.out.println(e.getMessage());
            return null;

        }


    }

    public String[] detallesRelCond(String username) {
        try {
            String[] relCond = new String[2];
            String[] id = usuarioQuery(username);
            String consulta = "SELECT religion, estrato_social FROM persona_natural WHERE id='" + id[0] + "';";
            ResultSet result = state.executeQuery(consulta);
            while (!(result.isLast())) {
                result.next();
                relCond[0] = result.getString("religion");
                relCond[1] = result.getString("estrato_social");
            }
            return relCond;
        } catch (Exception e) {
            return null;
        }
    }

    public void updateEstratoReligionCOM(estratoReligionCOMForm formBean) {
        try {
            String[] id = usuarioQuery(formBean.getUserName());
            String update = "update comunidad set religion='" + formBean.getReligion() + "', condicion_social='" + formBean.getEstrato() + "' WHERE id='" + id[0] + "';";
            state.executeUpdate(update);
        } catch (Exception e) {
            return;
        }
    }

    public void updateEstratoReligionPN(estratoReligionPNForm formBean) {
        try {
            String[] id = usuarioQuery(formBean.getUserName());
            String update = "update persona_natural set religion='" + formBean.getReligion() + "', estrato_social='" + formBean.getEstrato() + "' WHERE id='" + id[0] + "';";
            state.executeUpdate(update);
        } catch (Exception e) {
            return;
        }
    }
}
